Author: ogrisel
Date: Wed Mar 28 08:57:31 2012
New Revision: 1306217

URL: http://svn.apache.org/viewvc?rev=1306217&view=rev
Log:
STANBOL-197: OPTIM: use filter query everywhere in TopicClassificationEngine

Modified:
    
incubator/stanbol/trunk/enhancer/engines/topic/src/main/java/org/apache/stanbol/enhancer/engine/topic/TopicClassificationEngine.java

Modified: 
incubator/stanbol/trunk/enhancer/engines/topic/src/main/java/org/apache/stanbol/enhancer/engine/topic/TopicClassificationEngine.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/enhancer/engines/topic/src/main/java/org/apache/stanbol/enhancer/engine/topic/TopicClassificationEngine.java?rev=1306217&r1=1306216&r2=1306217&view=diff
==============================================================================
--- 
incubator/stanbol/trunk/enhancer/engines/topic/src/main/java/org/apache/stanbol/enhancer/engine/topic/TopicClassificationEngine.java
 (original)
+++ 
incubator/stanbol/trunk/enhancer/engines/topic/src/main/java/org/apache/stanbol/enhancer/engine/topic/TopicClassificationEngine.java
 Wed Mar 28 08:57:31 2012
@@ -474,9 +474,9 @@ public class TopicClassificationEngine e
                 // fetch metadata
                 SolrQuery metadataQuery = new SolrQuery("*:*");
                 // use filter queries to leverage the Solr cache explicitly
-                String typeFq = entryTypeField + ":" + METADATA_ENTRY;
-                String conceptFq = conceptUriField + ":" + 
ClientUtils.escapeQueryChars(conceptUri);
-                metadataQuery.setFilterQueries(typeFq, conceptFq);
+                metadataQuery.addFilterQuery(entryTypeField + ":" + 
METADATA_ENTRY);
+                metadataQuery
+                        .addFilterQuery(conceptUriField + ":" + 
ClientUtils.escapeQueryChars(conceptUri));
                 metadataQuery.setFields(conceptUriField, broaderField, 
primaryTopicUriField);
                 SolrDocument metadata = 
solrServer.query(metadataQuery).getResults().get(0);
                 String primaryTopicUri = (String) 
metadata.getFirstValue(primaryTopicUriField);
@@ -524,7 +524,8 @@ public class TopicClassificationEngine e
             return narrowerConcepts;
         }
         SolrServer solrServer = getActiveSolrServer();
-        SolrQuery query = new SolrQuery(entryTypeField + ":" + METADATA_ENTRY);
+        SolrQuery query = new SolrQuery("*:*");
+        query.addFilterQuery(entryTypeField + ":" + METADATA_ENTRY);
         query.addFilterQuery(broaderField + ":" + 
ClientUtils.escapeQueryChars(broadTopicId));
         query.addField(conceptUriField);
         query.addSortField(conceptUriField, SolrQuery.ORDER.asc);
@@ -547,7 +548,8 @@ public class TopicClassificationEngine e
             return broaderConcepts;
         }
         SolrServer solrServer = getActiveSolrServer();
-        SolrQuery query = new SolrQuery(conceptUriField + ":" + 
ClientUtils.escapeQueryChars(id));
+        SolrQuery query = new SolrQuery("*:*");
+        query.addFilterQuery(conceptUriField + ":" + 
ClientUtils.escapeQueryChars(id));
         query.addField(broaderField);
         try {
             for (SolrDocument result : solrServer.query(query).getResults()) {
@@ -572,18 +574,15 @@ public class TopicClassificationEngine e
     public Set<String> getRootConcepts() throws ClassifierException {
         LinkedHashSet<String> rootConcepts = new LinkedHashSet<String>();
         SolrServer solrServer = getActiveSolrServer();
-        SolrQuery query = new SolrQuery();
+        SolrQuery query = new SolrQuery("*:*");
         // TODO: this can be very big on flat thesauri: should we enable a 
paging API instead?
         query.setRows(MAX_ROOTS);
         query.setFields(conceptUriField);
         query.setSortField(conceptUriField, SolrQuery.ORDER.asc);
+        query.addFilterQuery(entryTypeField + ":" + METADATA_ENTRY);
         if (broaderField != null) {
             // find any topic with an empty broaderField
-            query.setParam("q", entryTypeField + ":" + METADATA_ENTRY + " AND 
-" + broaderField + ":"
-                                + SOLR_NON_EMPTY_FIELD);
-        } else {
-            // find any topic
-            query.setQuery(entryTypeField + ":" + METADATA_ENTRY);
+            query.addFilterQuery(" -" + broaderField + ":" + 
SOLR_NON_EMPTY_FIELD);
         }
         try {
             QueryResponse response = solrServer.query(query);
@@ -657,9 +656,9 @@ public class TopicClassificationEngine e
         try {
             UpdateRequest request = new UpdateRequest();
             for (String conceptId : conceptIds) {
-                SolrQuery query = new SolrQuery(entryTypeField + ":" + 
METADATA_ENTRY + " AND "
-                                                + conceptUriField + ":"
-                                                + 
ClientUtils.escapeQueryChars(conceptId));
+                SolrQuery query = new SolrQuery("*:*");
+                query.addFilterQuery(entryTypeField + ":" + METADATA_ENTRY);
+                query.addFilterQuery(conceptUriField + ":" + 
ClientUtils.escapeQueryChars(conceptId));
                 for (SolrDocument result : 
solrServer.query(query).getResults()) {
                     // there should be only one (or none: tolerated)
                     SolrInputDocument newEntry = new SolrInputDocument();
@@ -734,8 +733,8 @@ public class TopicClassificationEngine e
         // TODO: implement incremental update by using the date informations
         int processedCount = 0;
         SolrServer solrServer = getActiveSolrServer();
-        SolrQuery query = new SolrQuery();
-        String q = entryTypeField + ":" + METADATA_ENTRY;
+        SolrQuery query = new SolrQuery("*:*");
+        query.addFilterQuery(entryTypeField + ":" + METADATA_ENTRY);
         String offset = null;
         boolean done = false;
         int batchSize = 1000;
@@ -745,10 +744,9 @@ public class TopicClassificationEngine e
             while (!done) {
                 // batch over all the indexed topics
                 if (offset != null) {
-                    q += " AND " + conceptUriField + ":[" + 
ClientUtils.escapeQueryChars(offset.toString())
-                         + " TO *]";
+                    query.addFilterQuery(conceptUriField + ":["
+                                         + 
ClientUtils.escapeQueryChars(offset.toString()) + " TO *]");
                 }
-                query.setQuery(q);
                 QueryResponse response = solrServer.query(query);
                 int count = 0;
                 List<SolrDocument> batchDocuments = new 
ArrayList<SolrDocument>();
@@ -1179,8 +1177,9 @@ public class TopicClassificationEngine e
                                              List<String> 
falseNegativeExamples) throws ClassifierException {
         SolrServer solrServer = getActiveSolrServer();
         try {
-            SolrQuery query = new SolrQuery(entryTypeField + ":" + 
METADATA_ENTRY + " AND " + conceptUriField
-                                            + ":" + 
ClientUtils.escapeQueryChars(conceptId));
+            SolrQuery query = new SolrQuery("*:*");
+            query.addFilterQuery(entryTypeField + ":" + METADATA_ENTRY);
+            query.addFilterQuery(conceptUriField + ":" + 
ClientUtils.escapeQueryChars(conceptId));
             for (SolrDocument result : solrServer.query(query).getResults()) {
                 // there should be only one (or none: tolerated)
                 // fetch any old values to update (all metadata fields are 
assumed to be stored)s
@@ -1241,8 +1240,9 @@ public class TopicClassificationEngine e
     public ClassificationReport getPerformanceEstimates(String conceptId) 
throws ClassifierException {
 
         SolrServer solrServer = getActiveSolrServer();
-        SolrQuery query = new SolrQuery(entryTypeField + ":" + METADATA_ENTRY 
+ " AND " + conceptUriField
-                                        + ":" + 
ClientUtils.escapeQueryChars(conceptId));
+        SolrQuery query = new SolrQuery("*:*");
+        query.addFilterQuery(entryTypeField + ":" + METADATA_ENTRY);
+        query.addFilterQuery(conceptUriField + ":" + 
ClientUtils.escapeQueryChars(conceptId));
         try {
             SolrDocumentList results = solrServer.query(query).getResults();
             if (results.isEmpty()) {


Reply via email to