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"/>