You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by to...@apache.org on 2015/07/23 11:07:21 UTC
svn commit: r1692363 - in /jackrabbit/oak/trunk/oak-solr-core/src:
main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java
test/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndexTest.java
Author: tommaso
Date: Thu Jul 23 09:07:21 2015
New Revision: 1692363
URL: http://svn.apache.org/r1692363
Log:
OAK-3135 - solr should be used for pt restrictions only with ft/property restrictions
Modified:
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/plugins/index/solr/query/SolrQueryIndexTest.java
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=1692363&r1=1692362&r2=1692363&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 Thu Jul 23 09:07:21 2015
@@ -144,7 +144,9 @@ public class SolrQueryIndex implements F
// primary type restriction defined AND primary type restriction handled
if (filter.getPrimaryTypes().size() > 0 && configuration.useForPrimaryTypes()) {
- match++;
+ if (match > 0) {
+ match++;
+ }
}
Modified: jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndexTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndexTest.java?rev=1692363&r1=1692362&r2=1692363&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndexTest.java (original)
+++ jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndexTest.java Thu Jul 23 09:07:21 2015
@@ -187,7 +187,7 @@ public class SolrQueryIndexTest {
}
@Test
- public void testCostWithPrimaryTypeRestrictionsEnabled() throws Exception {
+ public void testCostWithOnlyPrimaryTypeRestrictionsEnabled() throws Exception {
NodeState root = mock(NodeState.class);
when(root.getNames(any(String.class))).thenReturn(Collections.<String>emptySet());
SelectorImpl selector = new SelectorImpl(root, "a");
@@ -204,7 +204,34 @@ public class SolrQueryIndexTest {
FilterImpl filter = new FilterImpl(selector, "select * from [nt:base] as a where jcr:primaryType = 'nt:unstructured')", new QueryEngineSettings());
filter.restrictProperty("jcr:primaryType", Operator.EQUAL, PropertyValues.newString("nt:unstructured"));
double cost = solrQueryIndex.getCost(filter, root);
- assertEquals(10, cost, 0);
+ assertEquals(Double.POSITIVE_INFINITY, cost, 0);
+ }
+
+ @Test
+ public void testCostWithPropertyAndPrimaryTypeRestrictionsEnabled() throws Exception {
+ NodeState root = mock(NodeState.class);
+ when(root.getNames(any(String.class))).thenReturn(Collections.<String>emptySet());
+ SelectorImpl selector = new SelectorImpl(root, "a");
+
+ SolrServer solrServer = mock(SolrServer.class);
+ OakSolrConfiguration configuration = new DefaultSolrConfiguration() {
+ @Override
+ public boolean useForPrimaryTypes() {
+ return true;
+ }
+
+ @Override
+ public boolean useForPropertyRestrictions() {
+ return true;
+ }
+ };
+ SolrQueryIndex solrQueryIndex = new SolrQueryIndex("solr", solrServer, configuration);
+
+ FilterImpl filter = new FilterImpl(selector, "select * from [nt:base] as a where jcr:primaryType = 'nt:unstructured')", new QueryEngineSettings());
+ filter.restrictProperty("jcr:primaryType", Operator.EQUAL, PropertyValues.newString("nt:unstructured"));
+ filter.restrictProperty("name", Operator.EQUAL, PropertyValues.newString("hello"));
+ double cost = solrQueryIndex.getCost(filter, root);
+ assertEquals(5, cost, 0);
}
@Test