Author: tommaso
Date: Tue Mar 4 14:04:53 2014
New Revision: 1574102
URL: http://svn.apache.org/r1574102
Log:
OAK-1492 - made Solr catch-all field configurable
Modified:
jackrabbit/oak/trunk/oak-solr-core/pom.xml
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/DefaultSolrConfiguration.java
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/OakSolrConfiguration.java
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/OakSolrNodeStateConfiguration.java
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationDefaults.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/plugins/index/solr/configuration/DefaultAnalyzersConfigurationTest.java
jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded/EmbeddedSolrConfiguration.java
jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded/EmbeddedSolrServerProvider.java
jackrabbit/oak/trunk/oak-solr-remote/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/http/RemoteSolrConfigurationProvider.java
Modified: jackrabbit/oak/trunk/oak-solr-core/pom.xml
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/pom.xml?rev=1574102&r1=1574101&r2=1574102&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-solr-core/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-solr-core/pom.xml Tue Mar 4 14:04:53 2014
@@ -108,6 +108,66 @@
</build>
<dependencies>
+ <!-- TEST -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>oak-core</artifactId>
+ <version>${project.version}</version>
+ <classifier>tests</classifier>
+ </dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <version>2.5</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>oak-mk</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>log4j-over-slf4j</artifactId>
+ <optional>true</optional>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>jcl-over-slf4j</artifactId>
+ <optional>true</optional>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <version>1.9.5</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.lucene</groupId>
+ <artifactId>lucene-test-framework</artifactId>
+ <version>${lucene.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.lucene</groupId>
+ <artifactId>lucene-core</artifactId>
+ <version>${lucene.version}</version>
+ <scope>test</scope>
+ </dependency>
+
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
@@ -221,69 +281,10 @@
<artifactId>org.apache.felix.scr.annotations</artifactId>
<scope>provided</scope>
</dependency>
- <dependency>
- <groupId>biz.aQute.bnd</groupId>
- <artifactId>bndlib</artifactId>
- <scope>provided</scope>
- </dependency>
-
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
<dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>oak-core</artifactId>
- <version>${project.version}</version>
- <classifier>tests</classifier>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <version>2.5</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>oak-mk</artifactId>
- <version>${project.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>log4j-over-slf4j</artifactId>
- <optional>true</optional>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>jcl-over-slf4j</artifactId>
- <optional>true</optional>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>ch.qos.logback</groupId>
- <artifactId>logback-classic</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-core</artifactId>
- <version>1.9.5</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.lucene</groupId>
- <artifactId>lucene-test-framework</artifactId>
- <version>${solr.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.lucene</groupId>
- <artifactId>lucene-core</artifactId>
- <version>${solr.version}</version>
- <scope>test</scope>
+ <groupId>biz.aQute.bnd</groupId>
+ <artifactId>bndlib</artifactId>
+ <scope>provided</scope>
</dependency>
</dependencies>
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/DefaultSolrConfiguration.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/DefaultSolrConfiguration.java?rev=1574102&r1=1574101&r2=1574102&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/DefaultSolrConfiguration.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/DefaultSolrConfiguration.java
Tue Mar 4 14:04:53 2014
@@ -77,4 +77,9 @@ public class DefaultSolrConfiguration im
return CommitPolicy.SOFT;
}
+ @Override
+ public String getCatchAllField() {
+ return SolrServerConfigurationDefaults.CATCHALL_FIELD;
+ }
+
}
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/OakSolrConfiguration.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/OakSolrConfiguration.java?rev=1574102&r1=1574101&r2=1574102&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/OakSolrConfiguration.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/OakSolrConfiguration.java
Tue Mar 4 14:04:53 2014
@@ -63,4 +63,9 @@ public interface OakSolrConfiguration {
*/
public CommitPolicy getCommitPolicy();
+ /**
+ * Provide a field name that is used as the default "catch all" field for
searching over all the data
+ * @return a <code>String</code> representing the Solr field to be used as
"catch all" field
+ */
+ public String getCatchAllField();
}
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/OakSolrNodeStateConfiguration.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/OakSolrNodeStateConfiguration.java?rev=1574102&r1=1574101&r2=1574102&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/OakSolrNodeStateConfiguration.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/OakSolrNodeStateConfiguration.java
Tue Mar 4 14:04:53 2014
@@ -89,6 +89,11 @@ public abstract class OakSolrNodeStateCo
}
@Override
+ public String getCatchAllField() {
+ return getStringValueFor(Properties.CATCHALL_FIELD,
SolrServerConfigurationDefaults.CATCHALL_FIELD);
+ }
+
+ @Override
public CommitPolicy getCommitPolicy() {
return
CommitPolicy.valueOf(getStringValueFor(Properties.COMMIT_POLICY,
CommitPolicy.SOFT.toString()));
}
@@ -135,6 +140,7 @@ public abstract class OakSolrNodeStateCo
public static final String PARENT_FIELD = "parentField";
public static final String CHILDREN_FIELD = "childrenField";
public static final String DESCENDANTS_FIELD = "descendantsField";
+ public static final String CATCHALL_FIELD = "catchAllField";
public static final String COMMIT_POLICY = "commitPolicy";
}
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationDefaults.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationDefaults.java?rev=1574102&r1=1574101&r2=1574102&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationDefaults.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationDefaults.java
Tue Mar 4 14:04:53 2014
@@ -34,4 +34,5 @@ public class SolrServerConfigurationDefa
public static final String DESC_FIELD_NAME = "path_desc";
public static final String ANC_FIELD_NAME = "path_anc";
+ public static final String CATCHALL_FIELD = "catch_all";
}
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=1574102&r1=1574101&r2=1574102&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
Tue Mar 4 14:04:53 2014
@@ -207,16 +207,15 @@ public class SolrQueryIndex implements F
}
private boolean isHttpRequest(String nativeQueryString) {
- return nativeQueryString.matches("\\w+\\?.*"); // the query string
starts with ${handler.selector}?
+ // the query string starts with ${supported-handler.selector}?
+ return nativeQueryString.matches("(mlt|query|select|get)\\\\?.*");
}
private void setDefaults(SolrQuery solrQuery) {
solrQuery.setParam("q.op", "AND");
+ solrQuery.setParam("df", configuration.getCatchAllField());
- // TODO : change this to be not hard coded
- solrQuery.setParam("df", "catch_all");
-
- // TODO : can we handle this better?
+ // TODO : can we handle this better? e.g. with deep paging support?
solrQuery.setParam("rows", String.valueOf(Integer.MAX_VALUE));
}
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/DefaultAnalyzersConfigurationTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/DefaultAnalyzersConfigurationTest.java?rev=1574102&r1=1574101&r2=1574102&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/DefaultAnalyzersConfigurationTest.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/DefaultAnalyzersConfigurationTest.java
Tue Mar 4 14:04:53 2014
@@ -28,17 +28,17 @@ import org.apache.lucene.analysis.miscel
import org.apache.lucene.analysis.path.PathHierarchyTokenizer;
import org.apache.lucene.analysis.pattern.PatternReplaceFilter;
import org.apache.lucene.analysis.reverse.ReverseStringFilter;
+import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.Version;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
/**
* Testcase for checking default analyzers configurations behave as expected
with regards to path related restrictions
*
- * Note that default Solr analyzers for Oak should be equivalent to the ones
programmtically defined here.
+ * Note that default Solr analyzers for Oak should be equivalent to the ones
programmatically defined here.
*/
-@Ignore
[email protected]({"Lucene3x"})
public class DefaultAnalyzersConfigurationTest extends BaseTokenStreamTestCase
{
private Analyzer parentPathIndexingAnalyzer;
@@ -70,9 +70,9 @@ public class DefaultAnalyzersConfigurati
@Override
protected TokenStreamComponents createComponents(String fieldName,
Reader reader) {
Tokenizer source = new KeywordTokenizer(reader);
- TokenStream filter = new
ReverseStringFilter(Version.LUCENE_41, source);
+ TokenStream filter = new
ReverseStringFilter(Version.LUCENE_47, source);
filter = new PatternReplaceFilter(filter,
Pattern.compile("[^\\/]+\\/"), "", false);
- filter = new ReverseStringFilter(Version.LUCENE_41, filter);
+ filter = new ReverseStringFilter(Version.LUCENE_47, filter);
return new TokenStreamComponents(source, filter);
}
};
@@ -81,11 +81,11 @@ public class DefaultAnalyzersConfigurati
@Override
protected TokenStreamComponents createComponents(String fieldName,
Reader reader) {
Tokenizer source = new KeywordTokenizer(reader);
- TokenStream filter = new
ReverseStringFilter(Version.LUCENE_41, source);
- filter = new LengthFilter(false, filter, 2, Integer.MAX_VALUE);
+ TokenStream filter = new
ReverseStringFilter(Version.LUCENE_47, source);
+ filter = new LengthFilter(Version.LUCENE_47, filter, 2,
Integer.MAX_VALUE);
filter = new PatternReplaceFilter(filter,
Pattern.compile("([^\\/]+)(\\/)"), "$2", false);
filter = new PatternReplaceFilter(filter,
Pattern.compile("(\\/)(.+)"), "$2", false);
- filter = new ReverseStringFilter(Version.LUCENE_41, filter);
+ filter = new ReverseStringFilter(Version.LUCENE_47, filter);
return new TokenStreamComponents(source, filter);
}
};
Modified:
jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded/EmbeddedSolrConfiguration.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded/EmbeddedSolrConfiguration.java?rev=1574102&r1=1574101&r2=1574102&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded/EmbeddedSolrConfiguration.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded/EmbeddedSolrConfiguration.java
Tue Mar 4 14:04:53 2014
@@ -80,4 +80,9 @@ public class EmbeddedSolrConfiguration i
return CommitPolicy.SOFT;
}
+ @Override
+ public String getCatchAllField() {
+ return SolrServerConfigurationDefaults.CATCHALL_FIELD;
+ }
+
}
Modified:
jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded/EmbeddedSolrServerProvider.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded/EmbeddedSolrServerProvider.java?rev=1574102&r1=1574101&r2=1574102&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded/EmbeddedSolrServerProvider.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-embedded/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/embedded/EmbeddedSolrServerProvider.java
Tue Mar 4 14:04:53 2014
@@ -120,7 +120,7 @@ public class EmbeddedSolrServerProvider
CoreContainer coreContainer = new CoreContainer(solrHomePath);
try {
- coreContainer.load(solrHomePath, new File(solrConfigPath));
+ coreContainer.load();
} finally {
Thread.currentThread().setContextClassLoader(classLoader);
}
Modified:
jackrabbit/oak/trunk/oak-solr-remote/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/http/RemoteSolrConfigurationProvider.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-remote/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/http/RemoteSolrConfigurationProvider.java?rev=1574102&r1=1574101&r2=1574102&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-remote/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/http/RemoteSolrConfigurationProvider.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-remote/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/http/RemoteSolrConfigurationProvider.java
Tue Mar 4 14:04:53 2014
@@ -43,6 +43,7 @@ public class RemoteSolrConfigurationProv
private static final String DEFAULT_CHILD_FIELD = "path_child";
private static final String DEFAULT_PARENT_FIELD = "path_anc";
private static final String DEFAULT_PATH_FIELD = "path_exact";
+ private static final String DEFAULT_CATCHALL_FIELD = "catch_all";
@Property(value = DEFAULT_DESC_FIELD, label = "field for descendants
search")
private static final String PATH_DESCENDANTS_FIELD = "path.desc.field";
@@ -56,6 +57,9 @@ public class RemoteSolrConfigurationProv
@Property(value = DEFAULT_PATH_FIELD, label = "field for path search")
private static final String PATH_EXACT_FIELD = "path.exact.field";
+ @Property(value = DEFAULT_CATCHALL_FIELD,label = "catch all field")
+ private static final String CATCH_ALL_FIELD = "catch.all.field";
+
@Property(options = {
@PropertyOption(name = "HARD",
value = "Hard commit"
@@ -74,6 +78,7 @@ public class RemoteSolrConfigurationProv
private String pathParentFieldName;
private String pathDescendantsFieldName;
private String pathExactFieldName;
+ private String catchAllField;
private CommitPolicy commitPolicy;
private OakSolrConfiguration oakSolrConfiguration;
@@ -84,14 +89,17 @@ public class RemoteSolrConfigurationProv
this.pathExactFieldName = DEFAULT_PATH_FIELD;
this.pathParentFieldName = DEFAULT_PARENT_FIELD;
this.commitPolicy = CommitPolicy.SOFT;
+ this.catchAllField = DEFAULT_CATCHALL_FIELD;
}
public RemoteSolrConfigurationProvider(String pathChildrenFieldName,
String pathParentFieldName,
- String pathDescendantsFieldName,
String pathExactFieldName, CommitPolicy commitPolicy) {
+ String pathDescendantsFieldName,
String pathExactFieldName, String catchAllField,
+ CommitPolicy commitPolicy) {
this.pathChildrenFieldName = pathChildrenFieldName;
this.pathParentFieldName = pathParentFieldName;
this.pathDescendantsFieldName = pathDescendantsFieldName;
this.pathExactFieldName = pathExactFieldName;
+ this.catchAllField = catchAllField;
this.commitPolicy = commitPolicy;
}
@@ -100,6 +108,7 @@ public class RemoteSolrConfigurationProv
pathParentFieldName =
String.valueOf(componentContext.getProperties().get(PATH_PARENT_FIELD));
pathExactFieldName =
String.valueOf(componentContext.getProperties().get(PATH_EXACT_FIELD));
pathDescendantsFieldName =
String.valueOf(componentContext.getProperties().get(PATH_DESCENDANTS_FIELD));
+ catchAllField =
String.valueOf(componentContext.getProperties().get(CATCH_ALL_FIELD));
commitPolicy =
CommitPolicy.valueOf(String.valueOf(componentContext.getProperties().get(COMMIT_POLICY)));
}
@@ -160,6 +169,11 @@ public class RemoteSolrConfigurationProv
return commitPolicy;
}
+ @Override
+ public String getCatchAllField() {
+ return catchAllField;
+ }
+
};
}
return oakSolrConfiguration;