Author: tommaso
Date: Fri Dec 18 10:07:33 2015
New Revision: 1720743

URL: http://svn.apache.org/viewvc?rev=1720743&view=rev
Log:
OAK-3809 - minor adjustments to solr facets

Modified:
    
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParser.java
    
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java
    
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/jcr/SolrOakRepositoryStub.java
    
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/jcr/query/FacetTest.java
    
jackrabbit/oak/trunk/oak-solr-core/src/test/resources/solr/oak/conf/schema.xml

Modified: 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParser.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParser.java?rev=1720743&r1=1720742&r2=1720743&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParser.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/FilterQueryParser.java
 Fri Dec 18 10:07:33 2015
@@ -64,17 +64,6 @@ class FilterQueryParser {
             }
         }
 
-        // facet enable
-        List<Filter.PropertyRestriction> facetRestriction = 
filter.getPropertyRestrictions(QueryImpl.REP_FACET);
-        if (facetRestriction != null && facetRestriction.size() > 0) {
-            solrQuery.setFacetMinCount(1);
-            solrQuery.setFacet(true);
-            for (Filter.PropertyRestriction pr : facetRestriction) {
-                String value = pr.first.getValue(Type.STRING);
-                
solrQuery.addFacetField(value.substring(QueryImpl.REP_FACET.length() + 1, 
value.length() - 1)+"_facet");
-            }
-        }
-
         if (sortOrder != null) {
             for (QueryIndex.OrderEntry orderEntry : sortOrder) {
                 SolrQuery.ORDER order;
@@ -102,6 +91,14 @@ class FilterQueryParser {
                     // can not use full "x is null"
                     continue;
                 }
+                // facets
+                if (QueryImpl.REP_FACET.equals(pr.propertyName)) {
+                    solrQuery.setFacetMinCount(1);
+                    solrQuery.setFacet(true);
+                    String value = pr.first.getValue(Type.STRING);
+                    
solrQuery.addFacetField(value.substring(QueryImpl.REP_FACET.length() + 1, 
value.length() - 1)+"_facet");
+                } 
+
                 // native query support
                 if (SolrQueryIndex.NATIVE_SOLR_QUERY.equals(pr.propertyName) 
|| SolrQueryIndex.NATIVE_LUCENE_QUERY.equals(pr.propertyName)) {
                     String nativeQueryString = 
String.valueOf(pr.first.getValue(pr.first.getType()));

Modified: 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java?rev=1720743&r1=1720742&r2=1720743&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java
 Fri Dec 18 10:07:33 2015
@@ -356,7 +356,7 @@ public class SolrQueryIndex implements F
                     if (!facetFields.isEmpty() && docs != null) {
                         for (SolrDocument doc : docs) {
                             String path = 
String.valueOf(doc.getFieldValue(configuration.getPathField()));
-                            // if facet path doesn't exist in the node state, 
filter the facets
+                            // if facet path doesn't exist for the calling 
user, filter the facet for this doc
                             for (FacetField ff : facetFields) {
                                 if (!filter.isAccessible(path + "/" + 
ff.getName())) {
                                     filterFacet(doc, ff);
@@ -398,7 +398,7 @@ public class SolrQueryIndex implements F
 
     private void filterFacet(SolrDocument doc, FacetField facetField) {
         // facet filtering by value requires that the facet values match the 
stored values
-        // a *_facet field must exist, storing docValues to be used for 
faceting and at filtering time
+        // a *_facet field must exist, stored (or /w docValues) to be used for 
faceting and at filtering time
         if (doc.getFieldNames().contains(facetField.getName())) {
             // decrease facet value
             Collection<Object> docFieldValues = 
doc.getFieldValues(facetField.getName());

Modified: 
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/jcr/SolrOakRepositoryStub.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/jcr/SolrOakRepositoryStub.java?rev=1720743&r1=1720742&r2=1720743&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/jcr/SolrOakRepositoryStub.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/jcr/SolrOakRepositoryStub.java
 Fri Dec 18 10:07:33 2015
@@ -46,7 +46,7 @@ public class SolrOakRepositoryStub exten
 
     @Override
     protected void preCreateRepository(Jcr jcr) {
-        String path = getClass().getResource("/").getFile() + "/queryjcrtest";
+        String path = getClass().getResource("/").getFile() + "/queryjcrtest" ;
         File f = new File(path);
         final SolrServer solrServer;
         try {

Modified: 
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/jcr/query/FacetTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/jcr/query/FacetTest.java?rev=1720743&r1=1720742&r2=1720743&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/jcr/query/FacetTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/jcr/query/FacetTest.java
 Fri Dec 18 10:07:33 2015
@@ -38,7 +38,6 @@ public class FacetTest extends AbstractQ
 
     public void testFacetRetrieval() throws Exception {
         Session session = superuser;
-        QueryManager qm = session.getWorkspace().getQueryManager();
         Node n1 = testRootNode.addNode("node1");
         n1.setProperty("text", "hello");
         Node n2 = testRootNode.addNode("node2");
@@ -47,6 +46,7 @@ public class FacetTest extends AbstractQ
         n3.setProperty("text", "oh hallo");
         session.save();
 
+        QueryManager qm = session.getWorkspace().getQueryManager();
         String sql2 = "select [jcr:path], [rep:facet(text)] from [nt:base] " +
                 "where contains([text], 'hello OR hallo') order by [jcr:path]";
         Query q = qm.createQuery(sql2, Query.JCR_SQL2);
@@ -57,7 +57,6 @@ public class FacetTest extends AbstractQ
 
     public void testFacetRetrievalMV() throws Exception {
         Session session = superuser;
-        QueryManager qm = session.getWorkspace().getQueryManager();
         Node n1 = testRootNode.addNode("node1");
         n1.setProperty("jcr:title", "apache jackrabbit oak");
         n1.setProperty("tags", new String[]{"software", "repository", 
"apache"});
@@ -72,6 +71,7 @@ public class FacetTest extends AbstractQ
         n4.setProperty("tags", new String[]{"software", "repository", "aem"});
         session.save();
 
+        QueryManager qm = session.getWorkspace().getQueryManager();
         String sql2 = "select [jcr:path], [rep:facet(tags)] from [nt:base] " +
                 "where contains([jcr:title], 'oak') order by [jcr:path]";
         Query q = qm.createQuery(sql2, Query.JCR_SQL2);
@@ -92,8 +92,8 @@ public class FacetTest extends AbstractQ
         session.save();
 
         session = getHelper().getReadOnlySession();
-        QueryManager qm = session.getWorkspace().getQueryManager();
 
+        QueryManager qm = session.getWorkspace().getQueryManager();
         String sql2 = "select [jcr:path], [rep:facet(text)] from [nt:base] " +
                 "where contains([text], 'hello OR hallo') order by [jcr:path]";
         Query q = qm.createQuery(sql2, Query.JCR_SQL2);
@@ -104,7 +104,6 @@ public class FacetTest extends AbstractQ
 
     public void testFacetRetrieval2() throws Exception {
         Session session = superuser;
-        QueryManager qm = session.getWorkspace().getQueryManager();
         Node n1 = testRootNode.addNode("node1");
         String pn = "jcr:title";
         n1.setProperty(pn, "hello");
@@ -114,6 +113,7 @@ public class FacetTest extends AbstractQ
         n3.setProperty(pn, "oh hallo");
         session.save();
 
+        QueryManager qm = session.getWorkspace().getQueryManager();
         String sql2 = "select [jcr:path], [rep:facet(" + pn + ")] from 
[nt:base] " +
                 "where contains([" + pn + "], 'hallo') order by [jcr:path]";
         Query q = qm.createQuery(sql2, Query.JCR_SQL2);
@@ -124,7 +124,6 @@ public class FacetTest extends AbstractQ
 
     public void testMultipleFacetsRetrieval() throws Exception {
         Session session = superuser;
-        QueryManager qm = session.getWorkspace().getQueryManager();
         Node n1 = testRootNode.addNode("node1");
         String pn = "jcr:title";
         String pn2 = "jcr:description";
@@ -138,6 +137,7 @@ public class FacetTest extends AbstractQ
         n3.setProperty(pn2, "a");
         session.save();
 
+        QueryManager qm = session.getWorkspace().getQueryManager();
         String sql2 = "select [jcr:path], [rep:facet(" + pn + ")], 
[rep:facet(" + pn2 + ")] from [nt:base] " +
                 "where contains([" + pn + "], 'hallo') order by [jcr:path]";
         Query q = qm.createQuery(sql2, Query.JCR_SQL2);

Modified: 
jackrabbit/oak/trunk/oak-solr-core/src/test/resources/solr/oak/conf/schema.xml
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/test/resources/solr/oak/conf/schema.xml?rev=1720743&r1=1720742&r2=1720743&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-solr-core/src/test/resources/solr/oak/conf/schema.xml 
(original)
+++ 
jackrabbit/oak/trunk/oak-solr-core/src/test/resources/solr/oak/conf/schema.xml 
Fri Dec 18 10:07:33 2015
@@ -163,7 +163,10 @@
     <copyField source="path_exact" dest="path_child"/>
     <copyField source="path_exact" dest=":path"/>
     <copyField source="*" dest="catch_all"/>
-    <copyField source="*" dest="*_facet"/>
+    <copyField source="jcr:description" dest="jcr:description_facet"/>
+    <copyField source="jcr:title" dest="jcr:title_facet"/>
+    <copyField source="text" dest="text_facet"/>
+    <copyField source="tags" dest="tags_facet"/>
     <copyField source="jcr:title" dest=":spellcheck"/>
     <copyField source="jcr:description" dest=":spellcheck"/>
     <copyField source="jcr:title" dest=":suggest"/>


Reply via email to