You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by sh...@apache.org on 2009/07/15 19:21:06 UTC
svn commit: r794328 - in /lucene/solr/trunk: ./ example/solr/conf/ lib/
src/java/org/apache/solr/analysis/ src/java/org/apache/solr/core/
src/java/org/apache/solr/handler/component/
src/java/org/apache/solr/request/ src/java/org/apache/solr/schema/ src...
Author: shalin
Date: Wed Jul 15 17:21:04 2009
New Revision: 794328
URL: http://svn.apache.org/viewvc?rev=794328&view=rev
Log:
Upgraded to Lucene 2.9-dev r794238.
Other changes include:
LUCENE-1614 - Use Lucene's DocIdSetIterator.NO_MORE_DOCS as the sentinel value.
LUCENE-1630 - Add acceptsDocsOutOfOrder method to Collector implementations.
LUCENE-1673, LUCENE-1701 - Trie has moved to Lucene core and renamed to NumericRangeQuery.
LUCENE-1662, LUCENE-1687 - Replace usage of ExtendedFieldCache by FieldCache.
SOLR-1241: Solr's CharFilter has been moved to Lucene. Remove CharFilter and related classes from Solr and use Lucene's corresponding code.
SOLR-1261: Lucene trunk renamed RangeQuery & Co to TermRangeQuery.
Added:
lucene/solr/trunk/src/java/org/apache/solr/analysis/TrieTokenizerFactory.java (with props)
Removed:
lucene/solr/trunk/src/java/org/apache/solr/analysis/BaseCharFilter.java
lucene/solr/trunk/src/java/org/apache/solr/analysis/CharFilter.java
lucene/solr/trunk/src/java/org/apache/solr/analysis/CharReader.java
lucene/solr/trunk/src/java/org/apache/solr/analysis/CharStream.java
lucene/solr/trunk/src/java/org/apache/solr/analysis/CharStreamAwareCJKTokenizer.java
lucene/solr/trunk/src/java/org/apache/solr/analysis/CharStreamAwareCJKTokenizerFactory.java
lucene/solr/trunk/src/java/org/apache/solr/analysis/CharStreamAwareCharTokenizer.java
lucene/solr/trunk/src/java/org/apache/solr/analysis/CharStreamAwareWhitespaceTokenizer.java
lucene/solr/trunk/src/java/org/apache/solr/analysis/CharStreamAwareWhitespaceTokenizerFactory.java
lucene/solr/trunk/src/java/org/apache/solr/analysis/MappingCharFilter.java
lucene/solr/trunk/src/java/org/apache/solr/analysis/NormalizeMap.java
lucene/solr/trunk/src/java/org/apache/solr/analysis/TrieIndexTokenizerFactory.java
lucene/solr/trunk/src/java/org/apache/solr/analysis/TrieQueryTokenizerFactory.java
lucene/solr/trunk/src/test/org/apache/solr/analysis/TestCharFilter.java
lucene/solr/trunk/src/test/org/apache/solr/analysis/TestMappingCharFilter.java
Modified:
lucene/solr/trunk/CHANGES.txt
lucene/solr/trunk/example/solr/conf/schema.xml
lucene/solr/trunk/lib/lucene-analyzers-2.9-dev.jar
lucene/solr/trunk/lib/lucene-core-2.9-dev.jar
lucene/solr/trunk/lib/lucene-highlighter-2.9-dev.jar
lucene/solr/trunk/lib/lucene-memory-2.9-dev.jar
lucene/solr/trunk/lib/lucene-misc-2.9-dev.jar
lucene/solr/trunk/lib/lucene-queries-2.9-dev.jar
lucene/solr/trunk/lib/lucene-snowball-2.9-dev.jar
lucene/solr/trunk/lib/lucene-spellchecker-2.9-dev.jar
lucene/solr/trunk/src/java/org/apache/solr/analysis/CharFilterFactory.java
lucene/solr/trunk/src/java/org/apache/solr/analysis/MappingCharFilterFactory.java
lucene/solr/trunk/src/java/org/apache/solr/analysis/TokenizerChain.java
lucene/solr/trunk/src/java/org/apache/solr/core/StandardDirectoryFactory.java
lucene/solr/trunk/src/java/org/apache/solr/handler/component/QueryComponent.java
lucene/solr/trunk/src/java/org/apache/solr/request/SimpleFacets.java
lucene/solr/trunk/src/java/org/apache/solr/schema/FieldType.java
lucene/solr/trunk/src/java/org/apache/solr/schema/TrieField.java
lucene/solr/trunk/src/java/org/apache/solr/search/BitDocSet.java
lucene/solr/trunk/src/java/org/apache/solr/search/DocSetHitCollector.java
lucene/solr/trunk/src/java/org/apache/solr/search/QueryParsing.java
lucene/solr/trunk/src/java/org/apache/solr/search/SolrIndexSearcher.java
lucene/solr/trunk/src/java/org/apache/solr/search/function/DoubleFieldSource.java
lucene/solr/trunk/src/java/org/apache/solr/search/function/FieldCacheSource.java
lucene/solr/trunk/src/java/org/apache/solr/search/function/LongFieldSource.java
lucene/solr/trunk/src/java/org/apache/solr/search/function/StringIndexDocValues.java
lucene/solr/trunk/src/test/org/apache/solr/util/TestOpenBitSet.java
lucene/solr/trunk/src/webapp/web/admin/analysis.jsp
Modified: lucene/solr/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/CHANGES.txt?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
--- lucene/solr/trunk/CHANGES.txt (original)
+++ lucene/solr/trunk/CHANGES.txt Wed Jul 15 17:21:04 2009
@@ -552,6 +552,17 @@
hitting "/admin/logging.jsp" should switch to "/admin/logging".
(hossman)
+42. Upgraded to Lucene 2.9-dev r794238. Other changes include:
+ LUCENE-1614 - Use Lucene's DocIdSetIterator.NO_MORE_DOCS as the sentinel value.
+ LUCENE-1630 - Add acceptsDocsOutOfOrder method to Collector implementations.
+ LUCENE-1673, LUCENE-1701 - Trie has moved to Lucene core and renamed to NumericRangeQuery.
+ LUCENE-1662, LUCENE-1687 - Replace usage of ExtendedFieldCache by FieldCache.
+ (shalin)
+
+42. SOLR-1241: Solr's CharFilter has been moved to Lucene. Remove CharFilter and related classes
+ from Solr and use Lucene's corresponding code (koji via shalin)
+
+43. SOLR-1261: Lucene trunk renamed RangeQuery & Co to TermRangeQuery (Uwe Schindler via shalin)
Build
----------------------
Modified: lucene/solr/trunk/example/solr/conf/schema.xml
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/example/solr/conf/schema.xml?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
--- lucene/solr/trunk/example/solr/conf/schema.xml (original)
+++ lucene/solr/trunk/example/solr/conf/schema.xml Wed Jul 15 17:21:04 2009
@@ -252,12 +252,12 @@
</analyzer>
</fieldType>
- <!-- charFilter + "CharStream aware" WhitespaceTokenizer -->
+ <!-- charFilter + WhitespaceTokenizer -->
<!--
<fieldType name="textCharNorm" class="solr.TextField" positionIncrementGap="100" >
<analyzer>
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
- <tokenizer class="solr.CharStreamAwareWhitespaceTokenizerFactory"/>
+ <tokenizer class="solr.WhitespaceTokenizerFactory"/>
</analyzer>
</fieldType>
-->
@@ -347,7 +347,7 @@
<!-- "default" values can be specified for fields, indicating which
value should be used if no value is specified when adding a document.
-->
- <field name="popularity" type="sint" indexed="true" stored="true" default="0"/>
+ <field name="popularity" type="sint" indexed="true" stored="true"/>
<field name="inStock" type="boolean" indexed="true" stored="true"/>
<!-- Some sample docs exists solely to demonstrate the spellchecker
Modified: lucene/solr/trunk/lib/lucene-analyzers-2.9-dev.jar
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/lib/lucene-analyzers-2.9-dev.jar?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
Binary files - no diff available.
Modified: lucene/solr/trunk/lib/lucene-core-2.9-dev.jar
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/lib/lucene-core-2.9-dev.jar?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
Binary files - no diff available.
Modified: lucene/solr/trunk/lib/lucene-highlighter-2.9-dev.jar
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/lib/lucene-highlighter-2.9-dev.jar?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
Binary files - no diff available.
Modified: lucene/solr/trunk/lib/lucene-memory-2.9-dev.jar
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/lib/lucene-memory-2.9-dev.jar?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
Binary files - no diff available.
Modified: lucene/solr/trunk/lib/lucene-misc-2.9-dev.jar
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/lib/lucene-misc-2.9-dev.jar?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
Binary files - no diff available.
Modified: lucene/solr/trunk/lib/lucene-queries-2.9-dev.jar
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/lib/lucene-queries-2.9-dev.jar?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
Binary files - no diff available.
Modified: lucene/solr/trunk/lib/lucene-snowball-2.9-dev.jar
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/lib/lucene-snowball-2.9-dev.jar?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
Binary files - no diff available.
Modified: lucene/solr/trunk/lib/lucene-spellchecker-2.9-dev.jar
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/lib/lucene-spellchecker-2.9-dev.jar?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
Binary files - no diff available.
Modified: lucene/solr/trunk/src/java/org/apache/solr/analysis/CharFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/analysis/CharFilterFactory.java?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/analysis/CharFilterFactory.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/analysis/CharFilterFactory.java Wed Jul 15 17:21:04 2009
@@ -19,6 +19,8 @@
import java.util.Map;
+import org.apache.lucene.analysis.CharStream;
+
/**
*
* @version $Id$
Modified: lucene/solr/trunk/src/java/org/apache/solr/analysis/MappingCharFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/analysis/MappingCharFilterFactory.java?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/analysis/MappingCharFilterFactory.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/analysis/MappingCharFilterFactory.java Wed Jul 15 17:21:04 2009
@@ -24,6 +24,9 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import org.apache.lucene.analysis.CharStream;
+import org.apache.lucene.analysis.MappingCharFilter;
+import org.apache.lucene.analysis.NormalizeCharMap;
import org.apache.solr.common.ResourceLoader;
import org.apache.solr.common.util.StrUtils;
import org.apache.solr.util.plugin.ResourceLoaderAware;
@@ -37,7 +40,7 @@
public class MappingCharFilterFactory extends BaseCharFilterFactory implements
ResourceLoaderAware {
- protected NormalizeMap normMap;
+ protected NormalizeCharMap normMap;
private String mapping;
public void inform(ResourceLoader loader) {
@@ -62,7 +65,7 @@
catch( IOException e ){
throw new RuntimeException( e );
}
- normMap = new NormalizeMap();
+ normMap = new NormalizeCharMap();
parseRules( wlist, normMap );
}
}
@@ -73,8 +76,8 @@
// "source" => "target"
static Pattern p = Pattern.compile( "\"(.*)\"\\s*=>\\s*\"(.*)\"\\s*$" );
-
- protected void parseRules( List<String> rules, NormalizeMap normMap ){
+
+ protected void parseRules( List<String> rules, NormalizeCharMap normMap ){
for( String rule : rules ){
Matcher m = p.matcher( rule );
if( !m.find() )
Modified: lucene/solr/trunk/src/java/org/apache/solr/analysis/TokenizerChain.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/analysis/TokenizerChain.java?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/analysis/TokenizerChain.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/analysis/TokenizerChain.java Wed Jul 15 17:21:04 2009
@@ -18,7 +18,8 @@
package org.apache.solr.analysis;
import org.apache.lucene.analysis.TokenStream;
-import org.apache.solr.analysis.TokenizerFactory;
+import org.apache.lucene.analysis.CharStream;
+import org.apache.lucene.analysis.CharReader;
import java.io.Reader;
Added: lucene/solr/trunk/src/java/org/apache/solr/analysis/TrieTokenizerFactory.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/analysis/TrieTokenizerFactory.java?rev=794328&view=auto
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/analysis/TrieTokenizerFactory.java (added)
+++ lucene/solr/trunk/src/java/org/apache/solr/analysis/TrieTokenizerFactory.java Wed Jul 15 17:21:04 2009
@@ -0,0 +1,75 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.solr.analysis;
+
+import org.apache.lucene.analysis.TokenStream;
+import org.apache.lucene.analysis.NumericTokenStream;
+import org.apache.solr.common.SolrException;
+import org.apache.solr.schema.DateField;
+import static org.apache.solr.schema.TrieField.TrieTypes;
+
+import java.io.IOException;
+import java.io.Reader;
+
+/**
+ * Tokenizer for trie fields. It uses NumericTokenStream to create multiple trie encoded string per number.
+ * Each string created by this tokenizer for a given number differs from the previous by the given precisionStep.
+ * For query time token streams that only contain the highest precision term, use 32/64 as precisionStep.
+ * <p/>
+ * Refer to {@link org.apache.lucene.search.NumericRangeQuery} for more details.
+ *
+ * @version $Id$
+ * @see org.apache.lucene.search.NumericRangeQuery
+ * @see org.apache.solr.schema.TrieField
+ * @since solr 1.4
+ */
+public class TrieTokenizerFactory extends BaseTokenizerFactory {
+ protected static final DateField dateField = new DateField();
+ protected final int precisionStep;
+ protected final TrieTypes type;
+
+ public TrieTokenizerFactory(TrieTypes type, int precisionStep) {
+ this.type = type;
+ this.precisionStep = precisionStep;
+ }
+
+ public TokenStream create(Reader input) {
+ try {
+ StringBuilder builder = new StringBuilder();
+ char[] buf = new char[8];
+ int len;
+ while ((len = input.read(buf)) != -1)
+ builder.append(buf, 0, len);
+ switch (type) {
+ case INTEGER:
+ return new NumericTokenStream(precisionStep).setIntValue(Integer.parseInt(builder.toString()));
+ case FLOAT:
+ return new NumericTokenStream(precisionStep).setFloatValue(Float.parseFloat(builder.toString()));
+ case LONG:
+ return new NumericTokenStream(precisionStep).setLongValue(Long.parseLong(builder.toString()));
+ case DOUBLE:
+ return new NumericTokenStream(precisionStep).setDoubleValue(Double.parseDouble(builder.toString()));
+ case DATE:
+ return new NumericTokenStream(precisionStep).setLongValue(dateField.parseMath(null, builder.toString()).getTime());
+ default:
+ throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Unknown type for trie field");
+ }
+ } catch (IOException e) {
+ throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Unable to create TrieIndexTokenizer", e);
+ }
+ }
+}
Propchange: lucene/solr/trunk/src/java/org/apache/solr/analysis/TrieTokenizerFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: lucene/solr/trunk/src/java/org/apache/solr/analysis/TrieTokenizerFactory.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: lucene/solr/trunk/src/java/org/apache/solr/core/StandardDirectoryFactory.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/core/StandardDirectoryFactory.java?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/core/StandardDirectoryFactory.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/core/StandardDirectoryFactory.java Wed Jul 15 17:21:04 2009
@@ -21,8 +21,6 @@
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
-import org.apache.lucene.store.NIOFSDirectory;
-import org.apache.lucene.util.Constants;
/**
* Directory provider which mimics original Solr FSDirectory based behavior.
@@ -31,10 +29,6 @@
public class StandardDirectoryFactory extends DirectoryFactory {
public Directory open(String path) throws IOException {
- if (!Constants.WINDOWS) {
- return new NIOFSDirectory(new File(path), null);
- }
-
- return new FSDirectory(new File(path), null);
+ return FSDirectory.open(new File(path));
}
}
Modified: lucene/solr/trunk/src/java/org/apache/solr/handler/component/QueryComponent.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/handler/component/QueryComponent.java?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/handler/component/QueryComponent.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/handler/component/QueryComponent.java Wed Jul 15 17:21:04 2009
@@ -21,12 +21,11 @@
import org.apache.lucene.index.Term;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.search.*;
-import org.apache.lucene.search.ExtendedFieldCache.DoubleParser;
-import org.apache.lucene.search.ExtendedFieldCache.LongParser;
+import org.apache.lucene.search.FieldCache.DoubleParser;
+import org.apache.lucene.search.FieldCache.LongParser;
import org.apache.lucene.search.FieldCache.FloatParser;
import org.apache.lucene.search.FieldCache.IntParser;
import org.apache.lucene.search.FieldCache.Parser;
-import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.queryParser.ParseException;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
@@ -45,7 +44,6 @@
import org.apache.solr.util.SolrPluginUtils;
import java.io.IOException;
-import java.io.Reader;
import java.net.URL;
import java.util.*;
import java.text.Collator;
@@ -615,7 +613,7 @@
static ScoreDocComparator comparatorLong (final IndexReader reader, final String fieldname, Parser parser)
throws IOException {
final String field = fieldname.intern();
- final long[] fieldOrder = parser == null ? ExtendedFieldCache.EXT_DEFAULT.getLongs(reader, field) : ExtendedFieldCache.EXT_DEFAULT.getLongs(reader, field, (LongParser) parser);
+ final long[] fieldOrder = parser == null ? FieldCache.DEFAULT.getLongs(reader, field) : FieldCache.DEFAULT.getLongs(reader, field, (LongParser) parser);
return new ScoreDocComparator() {
public final int compare (final ScoreDoc i, final ScoreDoc j) {
@@ -680,7 +678,7 @@
static ScoreDocComparator comparatorDouble(final IndexReader reader, final String fieldname, Parser parser)
throws IOException {
final String field = fieldname.intern();
- final double[] fieldOrder = parser == null ? ExtendedFieldCache.EXT_DEFAULT.getDoubles(reader, field) : ExtendedFieldCache.EXT_DEFAULT.getDoubles(reader, field, (DoubleParser) parser);
+ final double[] fieldOrder = parser == null ? FieldCache.DEFAULT.getDoubles(reader, field) : FieldCache.DEFAULT.getDoubles(reader, field, (DoubleParser) parser);
return new ScoreDocComparator () {
public final int compare (final ScoreDoc i, final ScoreDoc j) {
Modified: lucene/solr/trunk/src/java/org/apache/solr/request/SimpleFacets.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/request/SimpleFacets.java?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/request/SimpleFacets.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/request/SimpleFacets.java Wed Jul 15 17:21:04 2009
@@ -309,7 +309,7 @@
throws IOException {
DocSet hasVal = searcher.getDocSet
- (new ConstantScoreRangeQuery(fieldName, null, null, false, false));
+ (new TermRangeQuery(fieldName, null, null, false, false));
return docs.andNotSize(hasVal);
}
@@ -665,14 +665,13 @@
}
/**
- * Macro for getting the numDocs of a ConstantScoreRangeQuery over docs
+ * Macro for getting the numDocs of a TermRangeQuery over docs
* @see SolrIndexSearcher#numDocs
- * @see ConstantScoreRangeQuery
+ * @see TermRangeQuery
*/
protected int rangeCount(String field, String low, String high,
boolean iLow, boolean iHigh) throws IOException {
- return searcher.numDocs(new ConstantScoreRangeQuery(field,low,high,
- iLow,iHigh),
+ return searcher.numDocs(new TermRangeQuery(field,low,high,iLow,iHigh),
base);
}
Modified: lucene/solr/trunk/src/java/org/apache/solr/schema/FieldType.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/schema/FieldType.java?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/schema/FieldType.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/schema/FieldType.java Wed Jul 15 17:21:04 2009
@@ -25,7 +25,7 @@
import org.apache.lucene.analysis.Token;
import org.apache.lucene.search.SortField;
import org.apache.lucene.search.Query;
-import org.apache.lucene.search.RangeQuery;
+import org.apache.lucene.search.TermRangeQuery;
import org.apache.solr.search.function.ValueSource;
import org.apache.solr.search.function.OrdFieldSource;
import org.apache.solr.search.Sorting;
@@ -436,23 +436,22 @@
* handle nulls in part1 and/or part2 as well as unequal minInclusive and maxInclusive parameters gracefully.
*
* @param parser
- *@param field the name of the field
+ * @param field the name of the field
* @param part1 the lower boundary of the range, nulls are allowed.
* @param part2 the upper boundary of the range, nulls are allowed
* @param minInclusive whether the minimum of the range is inclusive or not
* @param maxInclusive whether the maximum of the range is inclusive or not
-* @return a Query instance to perform range search according to given parameters
+* @return a Query instance to perform range search according to given parameters
*
* @see org.apache.solr.search.SolrQueryParser#getRangeQuery(String, String, String, boolean)
*/
public Query getRangeQuery(QParser parser, String field, String part1, String part2, boolean minInclusive, boolean maxInclusive) {
- RangeQuery rangeQuery = new RangeQuery(
+ // constant score mode is now enabled per default
+ return new TermRangeQuery(
field,
part1 == null ? null : toInternal(part1),
part2 == null ? null : toInternal(part2),
minInclusive, maxInclusive);
- rangeQuery.setConstantScoreRewrite(true);
- return rangeQuery;
}
}
Modified: lucene/solr/trunk/src/java/org/apache/solr/schema/TrieField.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/schema/TrieField.java?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/schema/TrieField.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/schema/TrieField.java Wed Jul 15 17:21:04 2009
@@ -19,9 +19,8 @@
import org.apache.lucene.document.Fieldable;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.SortField;
-import org.apache.lucene.search.trie.IntTrieRangeQuery;
-import org.apache.lucene.search.trie.LongTrieRangeQuery;
-import org.apache.lucene.search.trie.TrieUtils;
+import org.apache.lucene.search.NumericRangeQuery;
+import org.apache.lucene.search.FieldCache;
import org.apache.solr.analysis.*;
import org.apache.solr.common.SolrException;
import org.apache.solr.request.TextResponseWriter;
@@ -33,8 +32,9 @@
import java.util.Map;
/**
- * Provides field types to support for Lucene's Trie Range Queries. See {@linkplain org.apache.lucene.search.trie
- * package description} for more details. It supports integer, float, long, double and date types.
+ * Provides field types to support for Lucene's Trie Range Queries.
+ * See {@link org.apache.lucene.search.NumericRangeQuery} for more details.
+ * It supports integer, float, long, double and date types.
* <p/>
* For each number being added to this field, multiple terms are generated as per the algorithm described in the above
* link. The possible number of terms increases dramatically with higher precision steps (factor 2^precisionStep). For
@@ -46,7 +46,7 @@
* generated, range search will be no faster than any other number field, but sorting will be possible.
*
* @version $Id$
- * @see org.apache.lucene.search.trie.TrieUtils
+ * @see org.apache.lucene.search.NumericRangeQuery
* @since solr 1.4
*/
public class TrieField extends FieldType {
@@ -78,11 +78,12 @@
"Invalid type specified in schema.xml for field: " + args.get("name"), e);
}
}
-
+
CharFilterFactory[] filterFactories = new CharFilterFactory[0];
TokenFilterFactory[] tokenFilterFactories = new TokenFilterFactory[0];
- analyzer = new TokenizerChain(filterFactories, new TrieIndexTokenizerFactory(type, precisionStep), tokenFilterFactories);
- queryAnalyzer = new TokenizerChain(filterFactories, new TrieQueryTokenizerFactory(type), tokenFilterFactories);
+ analyzer = new TokenizerChain(filterFactories, new TrieTokenizerFactory(type, precisionStep), tokenFilterFactories);
+ // for query time we only need one token, so we use the biggest possible precisionStep:
+ queryAnalyzer = new TokenizerChain(filterFactories, new TrieTokenizerFactory(type, Integer.MAX_VALUE), tokenFilterFactories);
}
@Override
@@ -107,12 +108,14 @@
public SortField getSortField(SchemaField field, boolean top) {
switch (type) {
case INTEGER:
+ return new SortField(field.getName(), FieldCache.NUMERIC_UTILS_INT_PARSER, top);
case FLOAT:
- return TrieUtils.getIntSortField(field.getName(), top);
+ return new SortField(field.getName(), FieldCache.NUMERIC_UTILS_FLOAT_PARSER, top);
+ case DATE:
case LONG:
+ return new SortField(field.getName(), FieldCache.NUMERIC_UTILS_LONG_PARSER, top);
case DOUBLE:
- case DATE:
- return TrieUtils.getLongSortField(field.getName(), top);
+ return new SortField(field.getName(), FieldCache.NUMERIC_UTILS_DOUBLE_PARSER, top);
default:
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Unknown type for trie field: " + field.name);
}
@@ -121,15 +124,14 @@
public ValueSource getValueSource(SchemaField field) {
switch (type) {
case INTEGER:
- return new IntFieldSource(field.getName(), TrieUtils.FIELD_CACHE_INT_PARSER);
+ return new IntFieldSource(field.getName(), FieldCache.NUMERIC_UTILS_INT_PARSER);
case FLOAT:
- return new FloatFieldSource(field.getName(), TrieUtils.FIELD_CACHE_FLOAT_PARSER);
+ return new FloatFieldSource(field.getName(), FieldCache.NUMERIC_UTILS_FLOAT_PARSER);
+ case DATE:
case LONG:
- return new LongFieldSource(field.getName(), TrieUtils.FIELD_CACHE_LONG_PARSER);
+ return new LongFieldSource(field.getName(), FieldCache.NUMERIC_UTILS_LONG_PARSER);
case DOUBLE:
- return new DoubleFieldSource(field.getName(), TrieUtils.FIELD_CACHE_DOUBLE_PARSER);
- case DATE:
- return new LongFieldSource(field.getName(), TrieUtils.FIELD_CACHE_LONG_PARSER);
+ return new DoubleFieldSource(field.getName(), FieldCache.NUMERIC_UTILS_DOUBLE_PARSER);
default:
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Unknown type for trie field: " + field.name);
}
@@ -167,31 +169,31 @@
Query query = null;
switch (type) {
case INTEGER:
- query = new IntTrieRangeQuery(field, precisionStep,
+ query = NumericRangeQuery.newIntRange(field, precisionStep,
min == null ? null : Integer.parseInt(min),
max == null ? null : Integer.parseInt(max),
minInclusive, maxInclusive);
break;
case FLOAT:
- query = new IntTrieRangeQuery(field, precisionStep,
- min == null ? null : TrieUtils.floatToSortableInt(Float.parseFloat(min)),
- max == null ? null : TrieUtils.floatToSortableInt(Float.parseFloat(max)),
+ query = NumericRangeQuery.newFloatRange(field, precisionStep,
+ min == null ? null : Float.parseFloat(min),
+ max == null ? null : Float.parseFloat(max),
minInclusive, maxInclusive);
break;
case LONG:
- query = new LongTrieRangeQuery(field, precisionStep,
+ query = NumericRangeQuery.newLongRange(field, precisionStep,
min == null ? null : Long.parseLong(min),
max == null ? null : Long.parseLong(max),
minInclusive, maxInclusive);
break;
case DOUBLE:
- query = new LongTrieRangeQuery(field, precisionStep,
- min == null ? null : TrieUtils.doubleToSortableLong(Double.parseDouble(min)),
- max == null ? null : TrieUtils.doubleToSortableLong(Double.parseDouble(max)),
+ query = NumericRangeQuery.newDoubleRange(field, precisionStep,
+ min == null ? null : Double.parseDouble(min),
+ max == null ? null : Double.parseDouble(max),
minInclusive, maxInclusive);
break;
case DATE:
- query = new LongTrieRangeQuery(field, precisionStep,
+ query = NumericRangeQuery.newLongRange(field, precisionStep,
min == null ? null : dateField.parseMath(null, min).getTime(),
max == null ? null : dateField.parseMath(null, max).getTime(),
minInclusive, maxInclusive);
Modified: lucene/solr/trunk/src/java/org/apache/solr/search/BitDocSet.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/BitDocSet.java?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/search/BitDocSet.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/search/BitDocSet.java Wed Jul 15 17:21:04 2009
@@ -19,6 +19,7 @@
import org.apache.lucene.util.OpenBitSet;
import org.apache.lucene.util.OpenBitSetIterator;
+import org.apache.lucene.search.DocIdSetIterator;
/**
* <code>BitDocSet</code> represents an unordered set of Lucene Document Ids
@@ -84,7 +85,7 @@
private final OpenBitSetIterator iter = new OpenBitSetIterator(bits);
private int pos = iter.nextDoc();
public boolean hasNext() {
- return pos>=0;
+ return pos != DocIdSetIterator.NO_MORE_DOCS;
}
public Integer next() {
Modified: lucene/solr/trunk/src/java/org/apache/solr/search/DocSetHitCollector.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/DocSetHitCollector.java?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/search/DocSetHitCollector.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/search/DocSetHitCollector.java Wed Jul 15 17:21:04 2009
@@ -84,6 +84,10 @@
public void setNextReader(IndexReader reader, int docBase) throws IOException {
this.base = docBase;
}
+
+ public boolean acceptsDocsOutOfOrder() {
+ return false;
+ }
}
class DocSetDelegateCollector extends DocSetCollector {
@@ -136,4 +140,4 @@
collector.setNextReader(reader, docBase);
this.base = docBase;
}
-}
\ No newline at end of file
+}
Modified: lucene/solr/trunk/src/java/org/apache/solr/search/QueryParsing.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/QueryParsing.java?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/search/QueryParsing.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/search/QueryParsing.java Wed Jul 15 17:21:04 2009
@@ -317,13 +317,13 @@
Term t = q.getTerm();
FieldType ft = writeFieldName(t.field(), schema, out, flags);
writeFieldVal(t.text(), ft, out, flags);
- } else if (query instanceof ConstantScoreRangeQuery) {
- ConstantScoreRangeQuery q = (ConstantScoreRangeQuery)query;
+ } else if (query instanceof TermRangeQuery) {
+ TermRangeQuery q = (TermRangeQuery)query;
String fname = q.getField();
FieldType ft = writeFieldName(fname, schema, out, flags);
out.append( q.includesLower() ? '[' : '{' );
- String lt = q.getLowerVal();
- String ut = q.getUpperVal();
+ String lt = q.getLowerTerm();
+ String ut = q.getUpperTerm();
if (lt==null) {
out.append('*');
} else {
@@ -339,17 +339,17 @@
}
out.append( q.includesUpper() ? ']' : '}' );
- } else if (query instanceof RangeQuery) {
- RangeQuery q = (RangeQuery)query;
+ } else if (query instanceof NumericRangeQuery) {
+ NumericRangeQuery q = (NumericRangeQuery)query;
String fname = q.getField();
FieldType ft = writeFieldName(fname, schema, out, flags);
- out.append( q.isInclusive() ? '[' : '{' );
- Term lt = q.getLowerTerm();
- Term ut = q.getUpperTerm();
+ out.append( q.includesMin() ? '[' : '{' );
+ Number lt = q.getMin();
+ Number ut = q.getMax();
if (lt==null) {
out.append('*');
} else {
- writeFieldVal(lt.text(), ft, out, flags);
+ writeFieldVal(lt.toString(), ft, out, flags);
}
out.append(" TO ");
@@ -357,11 +357,10 @@
if (ut==null) {
out.append('*');
} else {
- writeFieldVal(ut.text(), ft, out, flags);
+ writeFieldVal(ut.toString(), ft, out, flags);
}
- out.append( q.isInclusive() ? ']' : '}' );
-
+ out.append( q.includesMax() ? ']' : '}' );
} else if (query instanceof BooleanQuery) {
BooleanQuery q = (BooleanQuery)query;
boolean needParens=false;
Modified: lucene/solr/trunk/src/java/org/apache/solr/search/SolrIndexSearcher.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/SolrIndexSearcher.java?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/search/SolrIndexSearcher.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/search/SolrIndexSearcher.java Wed Jul 15 17:21:04 2009
@@ -934,6 +934,9 @@
}
public void setNextReader(IndexReader reader, int docBase) throws IOException {
}
+ public boolean acceptsDocsOutOfOrder() {
+ return true;
+ }
};
} else {
collector = new Collector() {
@@ -948,6 +951,9 @@
}
public void setNextReader(IndexReader reader, int docBase) throws IOException {
}
+ public boolean acceptsDocsOutOfOrder() {
+ return true;
+ }
};
}
@@ -1051,6 +1057,9 @@
}
public void setNextReader(IndexReader reader, int docBase) throws IOException {
}
+ public boolean acceptsDocsOutOfOrder() {
+ return false;
+ }
});
}
Modified: lucene/solr/trunk/src/java/org/apache/solr/search/function/DoubleFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/function/DoubleFieldSource.java?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/search/function/DoubleFieldSource.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/search/function/DoubleFieldSource.java Wed Jul 15 17:21:04 2009
@@ -18,7 +18,7 @@
package org.apache.solr.search.function;
import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.search.ExtendedFieldCache;
+import org.apache.lucene.search.FieldCache;
import java.io.IOException;
@@ -31,13 +31,13 @@
*/
public class DoubleFieldSource extends FieldCacheSource {
- protected ExtendedFieldCache.DoubleParser parser;
+ protected FieldCache.DoubleParser parser;
public DoubleFieldSource(String field) {
this(field, null);
}
- public DoubleFieldSource(String field, ExtendedFieldCache.DoubleParser parser) {
+ public DoubleFieldSource(String field, FieldCache.DoubleParser parser) {
super(field);
this.parser = parser;
}
@@ -48,8 +48,8 @@
public DocValues getValues(IndexReader reader) throws IOException {
final double[] arr = (parser == null) ?
- ((ExtendedFieldCache) cache).getDoubles(reader, field) :
- ((ExtendedFieldCache) cache).getDoubles(reader, field, parser);
+ ((FieldCache) cache).getDoubles(reader, field) :
+ ((FieldCache) cache).getDoubles(reader, field, parser);
return new DocValues() {
public float floatVal(int doc) {
return (float) arr[doc];
@@ -152,4 +152,4 @@
return h;
}
-}
\ No newline at end of file
+}
Modified: lucene/solr/trunk/src/java/org/apache/solr/search/function/FieldCacheSource.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/function/FieldCacheSource.java?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/search/function/FieldCacheSource.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/search/function/FieldCacheSource.java Wed Jul 15 17:21:04 2009
@@ -18,7 +18,6 @@
package org.apache.solr.search.function;
import org.apache.lucene.search.FieldCache;
-import org.apache.lucene.search.ExtendedFieldCache;
/**
* A base class for ValueSource implementations that retrieve values for
@@ -28,7 +27,7 @@
*/
public abstract class FieldCacheSource extends ValueSource {
protected String field;
- protected FieldCache cache = ExtendedFieldCache.EXT_DEFAULT;
+ protected FieldCache cache = FieldCache.DEFAULT;
public FieldCacheSource(String field) {
this.field=field;
Modified: lucene/solr/trunk/src/java/org/apache/solr/search/function/LongFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/function/LongFieldSource.java?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/search/function/LongFieldSource.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/search/function/LongFieldSource.java Wed Jul 15 17:21:04 2009
@@ -18,7 +18,7 @@
package org.apache.solr.search.function;
import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.search.ExtendedFieldCache;
+import org.apache.lucene.search.FieldCache;
import java.io.IOException;
@@ -32,13 +32,13 @@
*/
public class LongFieldSource extends FieldCacheSource {
- protected ExtendedFieldCache.LongParser parser;
+ protected FieldCache.LongParser parser;
public LongFieldSource(String field) {
this(field, null);
}
- public LongFieldSource(String field, ExtendedFieldCache.LongParser parser) {
+ public LongFieldSource(String field, FieldCache.LongParser parser) {
super(field);
this.parser = parser;
}
@@ -49,8 +49,8 @@
public DocValues getValues(IndexReader reader) throws IOException {
final long[] arr = (parser == null) ?
- ((ExtendedFieldCache) cache).getLongs(reader, field) :
- ((ExtendedFieldCache) cache).getLongs(reader, field, parser);
+ ((FieldCache) cache).getLongs(reader, field) :
+ ((FieldCache) cache).getLongs(reader, field, parser);
return new DocValues() {
public float floatVal(int doc) {
return (float) arr[doc];
@@ -129,4 +129,4 @@
return h;
}
-}
\ No newline at end of file
+}
Modified: lucene/solr/trunk/src/java/org/apache/solr/search/function/StringIndexDocValues.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/function/StringIndexDocValues.java?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/search/function/StringIndexDocValues.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/search/function/StringIndexDocValues.java Wed Jul 15 17:21:04 2009
@@ -18,7 +18,6 @@
package org.apache.solr.search.function;
import org.apache.lucene.search.FieldCache;
-import org.apache.lucene.search.ExtendedFieldCache;
import org.apache.lucene.index.IndexReader;
import java.io.IOException;
Modified: lucene/solr/trunk/src/test/org/apache/solr/util/TestOpenBitSet.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/test/org/apache/solr/util/TestOpenBitSet.java?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
--- lucene/solr/trunk/src/test/org/apache/solr/util/TestOpenBitSet.java (original)
+++ lucene/solr/trunk/src/test/org/apache/solr/util/TestOpenBitSet.java Wed Jul 15 17:21:04 2009
@@ -23,6 +23,7 @@
import java.util.BitSet;
import org.apache.lucene.util.OpenBitSetIterator;
+import org.apache.lucene.search.DocIdSetIterator;
/**
* @deprecated
@@ -62,7 +63,7 @@
iterator.skipTo(bb+1);
bb = iterator.doc();
}
- assertEquals(aa,bb);
+ assertEquals(aa == -1 ? DocIdSetIterator.NO_MORE_DOCS : aa, bb);
} while (aa>=0);
}
Modified: lucene/solr/trunk/src/webapp/web/admin/analysis.jsp
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/webapp/web/admin/analysis.jsp?rev=794328&r1=794327&r2=794328&view=diff
==============================================================================
--- lucene/solr/trunk/src/webapp/web/admin/analysis.jsp (original)
+++ lucene/solr/trunk/src/webapp/web/admin/analysis.jsp Wed Jul 15 17:21:04 2009
@@ -19,8 +19,8 @@
org.apache.lucene.analysis.Token,
org.apache.lucene.analysis.TokenStream,
org.apache.lucene.index.Payload,
- org.apache.solr.analysis.CharReader,
- org.apache.solr.analysis.CharStream,
+ org.apache.lucene.analysis.CharReader,
+ org.apache.lucene.analysis.CharStream,
org.apache.solr.analysis.CharFilterFactory,
org.apache.solr.analysis.TokenFilterFactory,
org.apache.solr.analysis.TokenizerChain,