You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ry...@apache.org on 2015/03/10 23:13:10 UTC
svn commit: r1665724 - in /lucene/dev/trunk: ./ solr/ solr/core/
solr/core/src/java/org/apache/solr/schema/
solr/core/src/test-files/solr/collection1/conf/
solr/core/src/test/org/apache/solr/handler/
Author: ryan
Date: Tue Mar 10 22:13:10 2015
New Revision: 1665724
URL: http://svn.apache.org/r1665724
Log:
Merged revision(s) 1665723 from lucene/dev/branches/branch_5x:
SOLR-7228: expose Analyzer for AbstractSpatialPrefixTreeFieldType
Modified:
lucene/dev/trunk/ (props changed)
lucene/dev/trunk/solr/ (props changed)
lucene/dev/trunk/solr/core/ (props changed)
lucene/dev/trunk/solr/core/src/java/org/apache/solr/schema/AbstractSpatialPrefixTreeFieldType.java
lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/schema.xml
lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/FieldAnalysisRequestHandlerTest.java
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/schema/AbstractSpatialPrefixTreeFieldType.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/schema/AbstractSpatialPrefixTreeFieldType.java?rev=1665724&r1=1665723&r2=1665724&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/schema/AbstractSpatialPrefixTreeFieldType.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/schema/AbstractSpatialPrefixTreeFieldType.java Tue Mar 10 22:13:10 2015
@@ -17,14 +17,22 @@ package org.apache.solr.schema;
* limitations under the License.
*/
+import java.io.IOException;
+import java.io.Reader;
import java.util.Map;
+import org.apache.commons.io.IOUtils;
+import org.apache.lucene.analysis.Analyzer;
+import org.apache.lucene.analysis.TokenStream;
+import org.apache.lucene.analysis.core.KeywordTokenizer;
import org.apache.lucene.spatial.prefix.PrefixTreeStrategy;
import org.apache.lucene.spatial.prefix.tree.SpatialPrefixTree;
import org.apache.lucene.spatial.prefix.tree.SpatialPrefixTreeFactory;
import org.apache.lucene.spatial.query.SpatialArgsParser;
import org.apache.solr.util.MapListener;
+import com.spatial4j.core.shape.Shape;
+
/**
* @see PrefixTreeStrategy
* @lucene.experimental
@@ -62,7 +70,40 @@ public abstract class AbstractSpatialPre
if (v != null)
defaultFieldValuesArrayLen = Integer.valueOf(v);
}
-
+
+ /**
+ * This analyzer is not actually used for indexing. It is implemented here
+ * so that the analysis UI will show reasonable tokens.
+ */
+ @Override
+ public Analyzer getIndexAnalyzer()
+ {
+ return new Analyzer() {
+
+ @Override
+ protected TokenStreamComponents createComponents(final String fieldName) {
+ return new TokenStreamComponents(new KeywordTokenizer()) {
+ private Shape shape = null;
+
+ protected void setReader(final Reader reader) throws IOException {
+ source.setReader(reader);
+ shape = parseShape(IOUtils.toString(reader));
+ }
+
+ public TokenStream getTokenStream() {
+ PrefixTreeStrategy s = newSpatialStrategy(fieldName==null ? getTypeName() : fieldName);
+ return s.createIndexableFields(shape)[0].tokenStreamValue();
+ }
+ };
+ }
+ };
+ }
+
+ @Override
+ public Analyzer getQueryAnalyzer()
+ {
+ return getIndexAnalyzer();
+ }
@Override
protected T newSpatialStrategy(String fieldName) {
Modified: lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/schema.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/schema.xml?rev=1665724&r1=1665723&r2=1665724&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/schema.xml (original)
+++ lucene/dev/trunk/solr/core/src/test-files/solr/collection1/conf/schema.xml Tue Mar 10 22:13:10 2015
@@ -86,6 +86,8 @@
<fieldType name="tdatedv" class="solr.TrieDateField" precisionStep="6" docValues="true" multiValued="true"/>
<fieldType name="dateRange" class="solr.DateRangeField" />
+ <fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType"
+ geo="true" distErrPct="0.025" maxDistErr="0.001" distanceUnits="kilometers" />
<!-- solr.TextField allows the specification of custom
text analyzers specified as a tokenizer and a list
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/FieldAnalysisRequestHandlerTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/FieldAnalysisRequestHandlerTest.java?rev=1665724&r1=1665723&r2=1665724&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/FieldAnalysisRequestHandlerTest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/FieldAnalysisRequestHandlerTest.java Tue Mar 10 22:13:10 2015
@@ -411,4 +411,18 @@ public class FieldAnalysisRequestHandler
assertToken(tokenList.get(4), new TokenInfo("a", null, "word", 12, 13, 4, new int[]{3,4,4}, null, false));
assertToken(tokenList.get(5), new TokenInfo("test", null, "word", 14, 18, 5, new int[]{4,5,5}, null, false));
}
+
+ @Test
+ public void testSpatial() throws Exception {
+ FieldAnalysisRequest request = new FieldAnalysisRequest();
+ request.addFieldType("location_rpt");
+ request.setFieldValue("MULTIPOINT ((10 40), (40 30), (20 20), (30 10))");
+
+ NamedList<NamedList> result = handler.handleAnalysisRequest(request, h.getCore().getLatestSchema());
+ NamedList<List<NamedList>> tokens = (NamedList<List<NamedList>>)
+ ((NamedList)result.get("field_types").get("location_rpt")).get("index");
+ List<NamedList> tokenList = tokens.get("org.apache.lucene.spatial.prefix.BytesRefIteratorTokenStream");
+
+ assertEquals("s", tokenList.get(0).get("text") );
+ }
}