You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by si...@apache.org on 2011/02/09 10:36:03 UTC
svn commit: r1068809 [32/36] - in /lucene/dev/branches/docvalues: ./
dev-tools/eclipse/ dev-tools/idea/.idea/ dev-tools/idea/.idea/copyright/
dev-tools/idea/lucene/ dev-tools/idea/lucene/contrib/ant/
dev-tools/idea/lucene/contrib/queryparser/ dev-tools...
Modified: lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/impl/StreamingUpdateSolrServer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/impl/StreamingUpdateSolrServer.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/impl/StreamingUpdateSolrServer.java (original)
+++ lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/impl/StreamingUpdateSolrServer.java Wed Feb 9 09:35:27 2011
@@ -173,12 +173,20 @@ public class StreamingUpdateSolrServer e
}
catch (Throwable e) {
handleError( e );
- }
+ }
finally {
- // remove it from the list of running things...
+
+ // remove it from the list of running things unless we are the last runner and the queue is full...
+ // in which case, the next queue.put() would block and there would be no runners to handle it.
synchronized (runners) {
- runners.remove( this );
+ if (runners.size() == 1 && queue.remainingCapacity() == 0) {
+ // keep this runner alive
+ scheduler.execute(this);
+ } else {
+ runners.remove( this );
+ }
}
+
log.info( "finished: {}" , this );
runnerLock.unlock();
}
@@ -208,7 +216,7 @@ public class StreamingUpdateSolrServer e
return super.request( request );
}
}
-
+
try {
CountDownLatch tmpLock = lock;
if( tmpLock != null ) {
@@ -216,18 +224,18 @@ public class StreamingUpdateSolrServer e
}
queue.put( req );
-
- synchronized( runners ) {
- if( runners.isEmpty()
- || (queue.remainingCapacity() < queue.size()
- && runners.size() < threadCount) )
- {
+
+ synchronized( runners ) {
+ if( runners.isEmpty()
+ || (queue.remainingCapacity() < queue.size()
+ && runners.size() < threadCount) )
+ {
Runner r = new Runner();
scheduler.execute( r );
runners.add( r );
}
}
- }
+ }
catch (InterruptedException e) {
log.error( "interrupted", e );
throw new IOException( e.getLocalizedMessage() );
Modified: lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/request/JavaBinUpdateRequestCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/request/JavaBinUpdateRequestCodec.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/request/JavaBinUpdateRequestCodec.java (original)
+++ lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/request/JavaBinUpdateRequestCodec.java Wed Feb 9 09:35:27 2011
@@ -67,6 +67,7 @@ public class JavaBinUpdateRequestCodec {
nl.add("delByQ", updateRequest.getDeleteQuery());
nl.add("docs", docIter);
new JavaBinCodec(){
+ @Override
public void writeMap(Map val) throws IOException {
if (val instanceof SolrInputDocument) {
writeVal(solrInputDocumentToList((SolrInputDocument) val));
@@ -101,6 +102,7 @@ public class JavaBinUpdateRequestCodec {
// is ever refactored, this will not work.
private boolean seenOuterMostDocIterator = false;
+ @Override
public NamedList readNamedList(FastInputStream dis) throws IOException {
int sz = readSize(dis);
NamedList nl = new NamedList();
@@ -115,6 +117,7 @@ public class JavaBinUpdateRequestCodec {
return nl;
}
+ @Override
public List readIterator(FastInputStream fis) throws IOException {
// default behavior for reading any regular Iterator in the stream
Modified: lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/AnalysisResponseBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/AnalysisResponseBase.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/AnalysisResponseBase.java (original)
+++ lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/AnalysisResponseBase.java Wed Feb 9 09:35:27 2011
@@ -62,12 +62,12 @@ public class AnalysisResponseBase extend
*
* @return The built analysis phases list.
*/
- protected List<AnalysisPhase> buildPhases(NamedList<Object> phaseNL) {
+ protected List<AnalysisPhase> buildPhases(NamedList<List<NamedList<Object>>> phaseNL) {
List<AnalysisPhase> phases = new ArrayList<AnalysisPhase>(phaseNL.size());
- for (Map.Entry<String, Object> phaseEntry : phaseNL) {
+ for (Map.Entry<String, List<NamedList<Object>>> phaseEntry : phaseNL) {
AnalysisPhase phase = new AnalysisPhase(phaseEntry.getKey());
- List<NamedList> tokens = (List<NamedList>) phaseEntry.getValue();
- for (NamedList token : tokens) {
+ List<NamedList<Object>> tokens = phaseEntry.getValue();
+ for (NamedList<Object> token : tokens) {
TokenInfo tokenInfo = buildTokenInfo(token);
phase.addTokenInfo(tokenInfo);
}
@@ -95,7 +95,7 @@ public class AnalysisResponseBase extend
*
* @return The built token info.
*/
- protected TokenInfo buildTokenInfo(NamedList tokenNL) {
+ protected TokenInfo buildTokenInfo(NamedList<Object> tokenNL) {
String text = (String) tokenNL.get("text");
String rawText = (String) tokenNL.get("rawText");
String type = (String) tokenNL.get("type");
Modified: lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/DocumentAnalysisResponse.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/DocumentAnalysisResponse.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/DocumentAnalysisResponse.java (original)
+++ lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/DocumentAnalysisResponse.java Wed Feb 9 09:35:27 2011
@@ -42,24 +42,30 @@ public class DocumentAnalysisResponse ex
public void setResponse(NamedList<Object> response) {
super.setResponse(response);
- NamedList<Object> analysis = (NamedList<Object>) response.get("analysis");
- for (Map.Entry<String, Object> documentEntry : analysis) {
- DocumentAnalysis documentAnalysis = new DocumentAnalysis(documentEntry.getKey());
- NamedList<Object> document = (NamedList<Object>) documentEntry.getValue();
- for (Map.Entry<String, Object> fieldEntry : document) {
+ @SuppressWarnings("unchecked")
+ NamedList<NamedList<NamedList<Object>>> analysis
+ = (NamedList<NamedList<NamedList<Object>>>) response.get("analysis");
+ for (Map.Entry<String, NamedList<NamedList<Object>>> document : analysis) {
+ DocumentAnalysis documentAnalysis = new DocumentAnalysis(document.getKey());
+ for (Map.Entry<String, NamedList<Object>> fieldEntry : document.getValue()) {
FieldAnalysis fieldAnalysis = new FieldAnalysis(fieldEntry.getKey());
- NamedList field = (NamedList) fieldEntry.getValue();
- NamedList<Object> query = (NamedList<Object>) field.get("query");
+ NamedList<Object> field = fieldEntry.getValue();
+
+ @SuppressWarnings("unchecked")
+ NamedList<List<NamedList<Object>>> query
+ = (NamedList<List<NamedList<Object>>>) field.get("query");
if (query != null) {
List<AnalysisPhase> phases = buildPhases(query);
fieldAnalysis.setQueryPhases(phases);
}
-
- NamedList<Object> index = (NamedList<Object>) field.get("index");
- for (Map.Entry<String, Object> valueEntry : index) {
+
+ @SuppressWarnings("unchecked")
+ NamedList<NamedList<List<NamedList<Object>>>> index
+ = (NamedList<NamedList<List<NamedList<Object>>>>) field.get("index");
+ for (Map.Entry<String, NamedList<List<NamedList<Object>>>> valueEntry : index) {
String fieldValue = valueEntry.getKey();
- NamedList<Object> valueNL = (NamedList<Object>) valueEntry.getValue();
+ NamedList<List<NamedList<Object>>> valueNL = valueEntry.getValue();
List<AnalysisPhase> phases = buildPhases(valueNL);
fieldAnalysis.setIndexPhases(fieldValue, phases);
}
Modified: lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/FieldAnalysisResponse.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/FieldAnalysisResponse.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/FieldAnalysisResponse.java (original)
+++ lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/FieldAnalysisResponse.java Wed Feb 9 09:35:27 2011
@@ -42,35 +42,35 @@ public class FieldAnalysisResponse exten
public void setResponse(NamedList<Object> response) {
super.setResponse(response);
- NamedList analysisNL = (NamedList) response.get("analysis");
+ @SuppressWarnings("unchecked")
+ NamedList<NamedList<NamedList<NamedList<List<NamedList<Object>>>>>> analysisNL
+ = (NamedList<NamedList<NamedList<NamedList<List<NamedList<Object>>>>>>) response.get("analysis");
- NamedList<Object> fieldTypesNL = (NamedList<Object>) analysisNL.get("field_types");
- for (Map.Entry<String, Object> entry : fieldTypesNL) {
- Analysis analysis = new Analysis();
- NamedList fieldTypeNL = (NamedList) entry.getValue();
- NamedList<Object> queryNL = (NamedList<Object>) fieldTypeNL.get("query");
- List<AnalysisPhase> phases = (queryNL == null) ? null : buildPhases(queryNL);
- analysis.setQueryPhases(phases);
- NamedList<Object> indexNL = (NamedList<Object>) fieldTypeNL.get("index");
- phases = buildPhases(indexNL);
- analysis.setIndexPhases(phases);
- String fieldTypeName = entry.getKey();
- analysisByFieldTypeName.put(fieldTypeName, analysis);
+ for (Map.Entry<String, NamedList<NamedList<List<NamedList<Object>>>>> entry
+ : analysisNL.get("field_types")) {
+
+ analysisByFieldTypeName.put(entry.getKey(), buildAnalysis(entry.getValue()));
}
- NamedList<Object> fieldNamesNL = (NamedList<Object>) analysisNL.get("field_names");
- for (Map.Entry<String, Object> entry : fieldNamesNL) {
+ for (Map.Entry<String, NamedList<NamedList<List<NamedList<Object>>>>> entry
+ : analysisNL.get("field_names")) {
+
+ analysisByFieldName.put(entry.getKey(), buildAnalysis(entry.getValue()));
+ }
+ }
+
+ private Analysis buildAnalysis(NamedList<NamedList<List<NamedList<Object>>>> value) {
Analysis analysis = new Analysis();
- NamedList fieldNameNL = (NamedList) entry.getValue();
- NamedList<Object> queryNL = (NamedList<Object>) fieldNameNL.get("query");
+
+ NamedList<List<NamedList<Object>>> queryNL = value.get("query");
List<AnalysisPhase> phases = (queryNL == null) ? null : buildPhases(queryNL);
analysis.setQueryPhases(phases);
- NamedList<Object> indexNL = (NamedList<Object>) fieldNameNL.get("index");
+
+ NamedList<List<NamedList<Object>>> indexNL = value.get("index");
phases = buildPhases(indexNL);
analysis.setIndexPhases(phases);
- String fieldName = entry.getKey();
- analysisByFieldName.put(fieldName, analysis);
- }
+
+ return analysis;
}
/**
Modified: lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/FieldStatsInfo.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/FieldStatsInfo.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/FieldStatsInfo.java (original)
+++ lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/FieldStatsInfo.java Wed Feb 9 09:35:27 2011
@@ -74,11 +74,13 @@ public class FieldStatsInfo implements S
stddev = (Double)entry.getValue();
}
else if( "facets".equals( entry.getKey() ) ) {
+ @SuppressWarnings("unchecked")
NamedList<Object> fields = (NamedList<Object>)entry.getValue();
facets = new HashMap<String, List<FieldStatsInfo>>();
for( Map.Entry<String, Object> ev : fields ) {
List<FieldStatsInfo> vals = new ArrayList<FieldStatsInfo>();
facets.put( ev.getKey(), vals );
+ @SuppressWarnings("unchecked")
NamedList<NamedList<Object>> vnl = (NamedList<NamedList<Object>>) ev.getValue();
for( int i=0; i<vnl.size(); i++ ) {
String n = vnl.getName(i);
@@ -92,6 +94,7 @@ public class FieldStatsInfo implements S
}
}
+ @Override
public String toString()
{
StringBuilder sb = new StringBuilder();
Modified: lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/QueryResponse.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/QueryResponse.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/QueryResponse.java (original)
+++ lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/QueryResponse.java Wed Feb 9 09:35:27 2011
@@ -44,9 +44,9 @@ public class QueryResponse extends SolrR
private NamedList<Object> _facetInfo = null;
private NamedList<Object> _debugInfo = null;
private NamedList<Object> _highlightingInfo = null;
- private NamedList<Object> _spellInfo = null;
+ private NamedList<NamedList<Object>> _spellInfo = null;
private NamedList<Object> _statsInfo = null;
- private NamedList<Object> _termsInfo = null;
+ private NamedList<NamedList<Number>> _termsInfo = null;
// Facet stuff
private Map<String,Integer> _facetQuery = null;
@@ -105,7 +105,8 @@ public class QueryResponse extends SolrR
}
else if( "facet_counts".equals( n ) ) {
_facetInfo = (NamedList<Object>) res.getVal( i );
- extractFacetInfo( _facetInfo );
+ // extractFacetInfo inspects _results, so defer calling it
+ // in case it hasn't been populated yet.
}
else if( "debug".equals( n ) ) {
_debugInfo = (NamedList<Object>) res.getVal( i );
@@ -116,7 +117,7 @@ public class QueryResponse extends SolrR
extractHighlightingInfo( _highlightingInfo );
}
else if ( "spellcheck".equals( n ) ) {
- _spellInfo = (NamedList<Object>) res.getVal( i );
+ _spellInfo = (NamedList<NamedList<Object>>) res.getVal( i );
extractSpellCheckInfo( _spellInfo );
}
else if ( "stats".equals( n ) ) {
@@ -124,17 +125,18 @@ public class QueryResponse extends SolrR
extractStatsInfo( _statsInfo );
}
else if ( "terms".equals( n ) ) {
- _termsInfo = (NamedList<Object>) res.getVal( i );
+ _termsInfo = (NamedList<NamedList<Number>>) res.getVal( i );
extractTermsInfo( _termsInfo );
}
}
+ if(_facetInfo != null) extractFacetInfo( _facetInfo );
}
- private void extractSpellCheckInfo(NamedList<Object> spellInfo) {
+ private void extractSpellCheckInfo(NamedList<NamedList<Object>> spellInfo) {
_spellResponse = new SpellCheckResponse(spellInfo);
}
- private void extractTermsInfo(NamedList<Object> termsInfo) {
+ private void extractTermsInfo(NamedList<NamedList<Number>> termsInfo) {
_termsResponse = new TermsResponse(termsInfo);
}
Modified: lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/SpellCheckResponse.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/SpellCheckResponse.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/SpellCheckResponse.java (original)
+++ lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/SpellCheckResponse.java Wed Feb 9 09:35:27 2011
@@ -35,8 +35,8 @@ public class SpellCheckResponse {
private List<Suggestion> suggestions = new ArrayList<Suggestion>();
Map<String, Suggestion> suggestionMap = new LinkedHashMap<String, Suggestion>();
- public SpellCheckResponse(NamedList<Object> spellInfo) {
- NamedList<Object> sugg = (NamedList<Object>) spellInfo.get("suggestions");
+ public SpellCheckResponse(NamedList<NamedList<Object>> spellInfo) {
+ NamedList<Object> sugg = spellInfo.get("suggestions");
if (sugg == null) {
correctlySpelled = true;
return;
@@ -55,12 +55,14 @@ public class SpellCheckResponse {
collations.add(new Collation()
.setCollationQueryString((String) sugg.getVal(i)));
} else if (o instanceof NamedList) {
- NamedList expandedCollation = (NamedList) o;
- String collationQuery = (String) expandedCollation
- .get("collationQuery");
+ @SuppressWarnings("unchecked")
+ NamedList<Object> expandedCollation = (NamedList<Object>) o;
+ String collationQuery
+ = (String) expandedCollation.get("collationQuery");
int hits = (Integer) expandedCollation.get("hits");
- NamedList<String> misspellingsAndCorrections = (NamedList<String>) expandedCollation
- .get("misspellingsAndCorrections");
+ @SuppressWarnings("unchecked")
+ NamedList<String> misspellingsAndCorrections
+ = (NamedList<String>) expandedCollation.get("misspellingsAndCorrections");
Collation collation = new Collation();
collation.setCollationQueryString(collationQuery);
@@ -79,6 +81,7 @@ public class SpellCheckResponse {
}
}
} else {
+ @SuppressWarnings("unchecked")
Suggestion s = new Suggestion(n, (NamedList<Object>) sugg.getVal(i));
suggestionMap.put(n, s);
suggestions.add(s);
@@ -112,7 +115,7 @@ public class SpellCheckResponse {
* <p>
* Return the first collated query string. For convenience and backwards-compatibility. Use getCollatedResults() for full data.
* </p>
- * @return
+ * @return first collated query string
*/
public String getCollatedResult() {
return collations==null || collations.size()==0 ? null : collations.get(0).collationQueryString;
@@ -123,7 +126,7 @@ public class SpellCheckResponse {
* Return all collations.
* Will include # of hits and misspelling-to-correction details if "spellcheck.collateExtendedResults was true.
* </p>
- * @return
+ * @return all collations
*/
public List<Collation> getCollatedResults() {
return collations;
@@ -152,16 +155,21 @@ public class SpellCheckResponse {
} else if ("origFreq".equals(n)) {
originalFrequency = (Integer) suggestion.getVal(i);
} else if ("suggestion".equals(n)) {
+ @SuppressWarnings("unchecked")
List list = (List)suggestion.getVal(i);
if (list.size() > 0 && list.get(0) instanceof NamedList) {
// extended results detected
+ @SuppressWarnings("unchecked")
+ List<NamedList> extended = (List<NamedList>)list;
alternativeFrequencies = new ArrayList<Integer>();
- for (NamedList nl : (List<NamedList>)list) {
+ for (NamedList nl : extended) {
alternatives.add((String)nl.get("word"));
alternativeFrequencies.add((Integer)nl.get("freq"));
}
} else {
- alternatives.addAll(list);
+ @SuppressWarnings("unchecked")
+ List<String> alts = (List<String>) list;
+ alternatives.addAll(alts);
}
}
}
Modified: lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/TermsResponse.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/TermsResponse.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/TermsResponse.java (original)
+++ lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/response/TermsResponse.java Wed Feb 9 09:35:27 2011
@@ -29,14 +29,14 @@ import java.util.Map;
public class TermsResponse {
private Map<String, List<Term>> termMap = new HashMap<String, List<Term>>();
- public TermsResponse(NamedList<Object> termsInfo) {
+ public TermsResponse(NamedList<NamedList<Number>> termsInfo) {
for (int i = 0; i < termsInfo.size(); i++) {
String fieldName = termsInfo.getName(i);
List<Term> itemList = new ArrayList<Term>();
- NamedList<Object> items = (NamedList<Object>) termsInfo.getVal(i);
+ NamedList<Number> items = termsInfo.getVal(i);
for (int j = 0; j < items.size(); j++) {
- Term t = new Term(items.getName(j), ((Number) items.getVal(j)).longValue());
+ Term t = new Term(items.getName(j), items.getVal(j).longValue());
itemList.add(t);
}
Modified: lucene/dev/branches/docvalues/solr/src/test-files/solr/conf/schema-copyfield-test.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test-files/solr/conf/schema-copyfield-test.xml?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test-files/solr/conf/schema-copyfield-test.xml (original)
+++ lucene/dev/branches/docvalues/solr/src/test-files/solr/conf/schema-copyfield-test.xml Wed Feb 9 09:35:27 2011
@@ -202,13 +202,14 @@
<fieldtype name="engporterfilt" class="solr.TextField">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
- <filter class="solr.EnglishPorterFilterFactory"/>
+ <filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldtype>
<fieldtype name="custengporterfilt" class="solr.TextField">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
- <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
+ <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+ <filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldtype>
<fieldtype name="stopfilt" class="solr.TextField">
Modified: lucene/dev/branches/docvalues/solr/src/test-files/solr/conf/schema-required-fields.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test-files/solr/conf/schema-required-fields.xml?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test-files/solr/conf/schema-required-fields.xml (original)
+++ lucene/dev/branches/docvalues/solr/src/test-files/solr/conf/schema-required-fields.xml Wed Feb 9 09:35:27 2011
@@ -193,13 +193,14 @@
<fieldtype name="engporterfilt" class="solr.TextField">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
- <filter class="solr.EnglishPorterFilterFactory"/>
+ <filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldtype>
<fieldtype name="custengporterfilt" class="solr.TextField">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
- <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
+ <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+ <filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldtype>
<fieldtype name="stopfilt" class="solr.TextField">
Modified: lucene/dev/branches/docvalues/solr/src/test-files/solr/conf/schema.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test-files/solr/conf/schema.xml?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test-files/solr/conf/schema.xml (original)
+++ lucene/dev/branches/docvalues/solr/src/test-files/solr/conf/schema.xml Wed Feb 9 09:35:27 2011
@@ -236,13 +236,14 @@
<fieldtype name="engporterfilt" class="solr.TextField">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
- <filter class="solr.EnglishPorterFilterFactory"/>
+ <filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldtype>
<fieldtype name="custengporterfilt" class="solr.TextField">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
- <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
+ <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+ <filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldtype>
<fieldtype name="stopfilt" class="solr.TextField">
@@ -401,8 +402,8 @@
<field name="text" type="text" indexed="true" stored="false"/>
<field name="subject" type="text" indexed="true" stored="true"/>
<field name="title" type="nametext" indexed="true" stored="true"/>
- <field name="weight" type="float" indexed="true" stored="true"/>
- <field name="bday" type="date" indexed="true" stored="true"/>
+ <field name="weight" type="float" indexed="true" stored="true" multiValued="false"/>
+ <field name="bday" type="date" indexed="true" stored="true" multiValued="false"/>
<field name="title_stemmed" type="text" indexed="true" stored="false"/>
<field name="title_lettertok" type="lettertok" indexed="true" stored="false"/>
@@ -479,9 +480,10 @@
<field name="numberpartfail" type="failtype1" indexed="true" stored="true"/>
- <field name="nullfirst" type="string" indexed="true" stored="true" sortMissingFirst="true"/>
+ <field name="nullfirst" type="string" indexed="true" stored="true" sortMissingFirst="true" multiValued="false"/>
<field name="subword" type="subword" indexed="true" stored="true"/>
+ <field name="subword_offsets" type="subword" indexed="true" stored="true" termOffsets="true"/>
<field name="numericsubword" type="numericsubword" indexed="true" stored="true"/>
<field name="protectedsubword" type="protectedsubword" indexed="true" stored="true"/>
@@ -506,27 +508,40 @@
both match, the first appearing in the schema will be used.
-->
<dynamicField name="*_i" type="int" indexed="true" stored="true"/>
+ <dynamicField name="*_i1" type="int" indexed="true" stored="true" multiValued="false"/>
+
<dynamicField name="*_s" type="string" indexed="true" stored="true"/>
<dynamicField name="*_s1" type="string" indexed="true" stored="true" multiValued="false"/>
<dynamicField name="*_l" type="long" indexed="true" stored="true"/>
+ <dynamicField name="*_l1" type="long" indexed="true" stored="true" multiValued="false"/>
<dynamicField name="*_t" type="text" indexed="true" stored="true"/>
<dynamicField name="*_b" type="boolean" indexed="true" stored="true"/>
<dynamicField name="*_f" type="float" indexed="true" stored="true"/>
+ <dynamicField name="*_f1" type="float" indexed="true" stored="true" multiValued="false"/>
<dynamicField name="*_d" type="double" indexed="true" stored="true"/>
+ <dynamicField name="*_d1" type="double" indexed="true" stored="true" multiValued="false"/>
<dynamicField name="*_dt" type="date" indexed="true" stored="true"/>
+ <dynamicField name="*_dt1" type="date" indexed="true" stored="true" multiValued="false"/>
<dynamicField name="*_bcd" type="bcdstr" indexed="true" stored="true"/>
<!-- some trie-coded dynamic fields for faster range queries -->
<dynamicField name="*_ti" type="tint" indexed="true" stored="true"/>
+ <dynamicField name="*_ti1" type="tint" indexed="true" stored="true" multiValued="false"/>
<dynamicField name="*_tl" type="tlong" indexed="true" stored="true"/>
+ <dynamicField name="*_tl1" type="tlong" indexed="true" stored="true" multiValued="false"/>
<dynamicField name="*_tf" type="tfloat" indexed="true" stored="true"/>
+ <dynamicField name="*_tf1" type="tfloat" indexed="true" stored="true" multiValued="false"/>
<dynamicField name="*_td" type="tdouble" indexed="true" stored="true"/>
+ <dynamicField name="*_td1" type="tdouble" indexed="true" stored="true" multiValued="false"/>
<dynamicField name="*_tdt" type="tdate" indexed="true" stored="true"/>
+ <dynamicField name="*_tdt1" type="tdate" indexed="true" stored="true" multiValued="false"/>
- <dynamicField name="*_si" type="sint" indexed="true" stored="true"/>
+ <dynamicField name="*_si" type="sint" indexed="true" stored="true" multiValued="false"/>
<dynamicField name="*_sl" type="slong" indexed="true" stored="true"/>
<dynamicField name="*_sf" type="sfloat" indexed="true" stored="true"/>
+ <dynamicField name="*_sf1" type="sfloat" indexed="true" stored="true" multiValued="false"/>
<dynamicField name="*_sd" type="sdouble" indexed="true" stored="true"/>
+ <dynamicField name="*_sd1" type="sdouble" indexed="true" stored="true" multiValued="false"/>
<dynamicField name="*_pi" type="pint" indexed="true" stored="true"/>
<dynamicField name="*_pf" type="pfloat" indexed="true" stored="true"/>
Modified: lucene/dev/branches/docvalues/solr/src/test-files/solr/conf/schema12.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test-files/solr/conf/schema12.xml?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test-files/solr/conf/schema12.xml (original)
+++ lucene/dev/branches/docvalues/solr/src/test-files/solr/conf/schema12.xml Wed Feb 9 09:35:27 2011
@@ -252,13 +252,14 @@
<fieldtype name="engporterfilt" class="solr.TextField">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
- <filter class="solr.EnglishPorterFilterFactory"/>
+ <filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldtype>
<fieldtype name="custengporterfilt" class="solr.TextField">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
- <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
+ <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+ <filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldtype>
<fieldtype name="stopfilt" class="solr.TextField">
@@ -286,14 +287,14 @@
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory"/>
- <filter class="solr.EnglishPorterFilterFactory"/>
+ <filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory"/>
- <filter class="solr.EnglishPorterFilterFactory"/>
+ <filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldtype>
@@ -303,14 +304,14 @@
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.WordDelimiterFilterFactory" protected="protwords.txt" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1" generateNumberParts="0" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
<filter class="solr.StopFilterFactory"/>
- <filter class="solr.EnglishPorterFilterFactory"/>
+ <filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.WordDelimiterFilterFactory" protected="protwords.txt" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
<filter class="solr.StopFilterFactory"/>
- <filter class="solr.EnglishPorterFilterFactory"/>
+ <filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldtype>
@@ -375,7 +376,7 @@
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
- <filter class="solr.EnglishPorterFilterFactory"/>
+ <filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
@@ -384,7 +385,7 @@
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
- <filter class="solr.EnglishPorterFilterFactory"/>
+ <filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
@@ -397,7 +398,7 @@
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory"
synonyms="synonyms.txt" expand="true" />
- <filter class="solr.EnglishPorterFilterFactory"/>
+ <filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
</analyzer>
</fieldtype>
@@ -544,6 +545,8 @@
<dynamicField name="*_i" type="int" indexed="true" stored="true"/>
<dynamicField name="*_is" type="int" indexed="true" stored="true" multiValued="true"/>
+ <dynamicField name="*_s1" type="string" indexed="true" stored="true" multiValued="false"/>
+ <!-- :TODO: why are these identical?!?!?! -->
<dynamicField name="*_s" type="string" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_ss" type="string" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_l" type="long" indexed="true" stored="true"/>
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/BaseDistributedSearchTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/BaseDistributedSearchTestCase.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/BaseDistributedSearchTestCase.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/BaseDistributedSearchTestCase.java Wed Feb 9 09:35:27 2011
@@ -1,5 +1,22 @@
package org.apache.solr;
+/**
+ * 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.
+ */
+
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
@@ -81,24 +98,28 @@ public abstract class BaseDistributedSea
public static Logger log = LoggerFactory.getLogger(BaseDistributedSearchTestCase.class);
public static RandVal rint = new RandVal() {
+ @Override
public Object val() {
return r.nextInt();
}
};
public static RandVal rlong = new RandVal() {
+ @Override
public Object val() {
return r.nextLong();
}
};
public static RandVal rfloat = new RandVal() {
+ @Override
public Object val() {
return r.nextFloat();
}
};
public static RandVal rdouble = new RandVal() {
+ @Override
public Object val() {
return r.nextDouble();
}
@@ -113,7 +134,7 @@ public abstract class BaseDistributedSea
*/
public abstract void doTest() throws Exception;
- public static String[] fieldNames = new String[]{"n_ti", "n_f", "n_tf", "n_d", "n_td", "n_l", "n_tl", "n_dt", "n_tdt"};
+ public static String[] fieldNames = new String[]{"n_ti1", "n_f1", "n_tf1", "n_d1", "n_td1", "n_l1", "n_tl1", "n_dt1", "n_tdt1"};
public static RandVal[] randVals = new RandVal[]{rint, rfloat, rfloat, rdouble, rdouble, rlong, rlong, rdate, rdate};
protected String[] getFieldNames() {
@@ -124,12 +145,21 @@ public abstract class BaseDistributedSea
return randVals;
}
+ /**
+ * Subclasses can override this to change a test's solr home
+ * (default is in test-files)
+ */
+ public String getSolrHome() {
+ return SolrTestCaseJ4.TEST_HOME;
+ }
+
@Override
public void setUp() throws Exception {
SolrTestCaseJ4.resetExceptionIgnores(); // ignore anything with ignore_exception in it
super.setUp();
System.setProperty("solr.test.sys.prop1", "propone");
System.setProperty("solr.test.sys.prop2", "proptwo");
+ System.setProperty("solr.solr.home", getSolrHome());
testDir = new File(TEMP_DIR,
getClass().getName() + "-" + System.currentTimeMillis());
testDir.mkdirs();
@@ -311,6 +341,7 @@ public abstract class BaseDistributedSea
Thread[] threads = new Thread[nThreads];
for (int i = 0; i < threads.length; i++) {
threads[i] = new Thread() {
+ @Override
public void run() {
for (int j = 0; j < stress; j++) {
int which = r.nextInt(clients.size());
@@ -597,6 +628,7 @@ public abstract class BaseDistributedSea
public static class RandDate extends RandVal {
public static TrieDateField df = new TrieDateField();
+ @Override
public Object val() {
long v = r.nextLong();
Date d = new Date(v);
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/BasicFunctionalityTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/BasicFunctionalityTest.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/BasicFunctionalityTest.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/BasicFunctionalityTest.java Wed Feb 9 09:35:27 2011
@@ -29,6 +29,8 @@ import javax.xml.parsers.DocumentBuilder
import org.apache.lucene.document.Field;
import org.apache.lucene.document.Fieldable;
import org.apache.lucene.index.LogMergePolicy;
+import org.apache.solr.common.SolrException;
+import org.apache.solr.common.SolrException.ErrorCode;
import org.apache.solr.common.params.AppendedSolrParams;
import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.params.DefaultSolrParams;
@@ -47,6 +49,8 @@ import org.apache.solr.schema.SchemaFiel
import org.apache.solr.search.DocIterator;
import org.apache.solr.search.DocList;
import org.apache.solr.update.SolrIndexWriter;
+
+
import org.junit.BeforeClass;
import org.junit.Test;
@@ -221,10 +225,15 @@ public class BasicFunctionalityTest exte
public void testRequestHandlerBaseException() {
final String tmp = "BOO! ignore_exception";
SolrRequestHandler handler = new RequestHandlerBase() {
+ @Override
public String getDescription() { return tmp; }
+ @Override
public String getSourceId() { return tmp; }
+ @Override
public String getSource() { return tmp; }
+ @Override
public String getVersion() { return tmp; }
+ @Override
public void handleRequestBody
( SolrQueryRequest req, SolrQueryResponse rsp ) {
throw new RuntimeException(tmp);
@@ -653,6 +662,39 @@ public class BasicFunctionalityTest exte
"*[count(//doc)=1]");
}
+ @Test
+ public void testAbuseOfSort() {
+
+ assertU(adoc("id", "9999991",
+ "sortabuse_b", "true",
+ "sortabuse_t", "zzz xxx ccc vvv bbb nnn aaa sss ddd fff ggg"));
+ assertU(adoc("id", "9999992",
+ "sortabuse_b", "true",
+ "sortabuse_t", "zzz xxx ccc vvv bbb nnn qqq www eee rrr ttt"));
+
+ assertU(commit());
+
+ try {
+ assertQ("sort on something that shouldn't work",
+ req("q", "sortabuse_b:true",
+ "sort", "sortabuse_t asc"),
+ "*[count(//doc)=2]");
+ fail("no error encountered when sorting on sortabuse_t");
+ } catch (Exception outer) {
+ // EXPECTED
+ Throwable root = getRootCause(outer);
+ assertEquals("sort exception root cause",
+ SolrException.class, root.getClass());
+ SolrException e = (SolrException) root;
+ assertEquals("incorrect error type",
+ SolrException.ErrorCode.BAD_REQUEST,
+ SolrException.ErrorCode.getErrorCode(e.code()));
+ assertTrue("exception doesn't contain field name",
+ -1 != e.getMessage().indexOf("sortabuse_t"));
+ }
+ }
+
+
// /** this doesn't work, but if it did, this is how we'd test it. */
// public void testOverwriteFalse() {
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/ConvertedLegacyTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/ConvertedLegacyTest.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/ConvertedLegacyTest.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/ConvertedLegacyTest.java Wed Feb 9 09:35:27 2011
@@ -123,9 +123,9 @@ public class ConvertedLegacyTest extends
// test range
assertU("<delete><id>44</id></delete>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"val_s\">apple</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"val_s\">banana</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"val_s\">pear</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"val_s\">apple</field><field name=\"val_s1\">apple</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"val_s\">banana</field><field name=\"val_s1\">banana</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"val_s\">pear</field><field name=\"val_s1\">pear</field></doc></add>");
assertU("<commit/>");
assertQ(req("val_s:[a TO z]")
,"//*[@numFound='3'] "
@@ -228,7 +228,7 @@ public class ConvertedLegacyTest extends
args = new HashMap<String,String>();
args.put("version","2.0");
args.put("defType","lucenePlusSort");
- req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z];val_s asc",
+ req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z];val_s1 asc",
"standard", 0, 0 , args);
assertQ(req
,"//*[@numFound='3'] "
@@ -237,7 +237,7 @@ public class ConvertedLegacyTest extends
args = new HashMap<String,String>();
args.put("version","2.0");
args.put("defType","lucenePlusSort");
- req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z];val_s desc",
+ req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z];val_s1 desc",
"standard", 0, 0 , args);
assertQ(req
,"//*[@numFound='3'] "
@@ -509,133 +509,133 @@ public class ConvertedLegacyTest extends
// test integer ranges and sorting
assertU("<delete><id>44</id></delete>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i\">1234567890</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i\">10</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i\">1</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i\">2</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i\">15</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i\">-1</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i\">-987654321</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i\">2147483647</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i\">-2147483648</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i\">0</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">1234567890</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">10</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">1</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">2</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">15</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">-1</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">-987654321</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">2147483647</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">-2147483648</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">0</field></doc></add>");
assertU("<commit/>");
assertQ(req("id:44")
,"*[count(//doc)=10]"
);
- assertQ(req("num_i:2147483647")
+ assertQ(req("num_i1:2147483647")
,"//@numFound[.='1'] "
,"//int[.='2147483647']"
);
- assertQ(req("num_i:\"-2147483648\"")
+ assertQ(req("num_i1:\"-2147483648\"")
,"//@numFound[.='1'] "
,"//int[.='-2147483648']"
);
- assertQ(req("id:44;num_i asc;")
+ assertQ(req("id:44;num_i1 asc;")
,"//doc[1]/int[.='-2147483648'] "
,"//doc[last()]/int[.='2147483647']"
);
- assertQ(req("id:44;num_i desc;")
+ assertQ(req("id:44;num_i1 desc;")
,"//doc[1]/int[.='2147483647'] "
,"//doc[last()]/int[.='-2147483648']"
);
- assertQ(req("num_i:[0 TO 9]")
+ assertQ(req("num_i1:[0 TO 9]")
,"*[count(//doc)=3]"
);
- assertQ(req("num_i:[-2147483648 TO 2147483647]")
+ assertQ(req("num_i1:[-2147483648 TO 2147483647]")
,"*[count(//doc)=10]"
);
- assertQ(req("num_i:[-10 TO -1]")
+ assertQ(req("num_i1:[-10 TO -1]")
,"*[count(//doc)=1]"
);
// test long ranges and sorting
assertU("<delete><id>44</id></delete>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l\">1234567890</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l\">10</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l\">1</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l\">2</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l\">15</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l\">-1</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l\">-987654321</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l\">9223372036854775807</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l\">-9223372036854775808</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l\">0</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">1234567890</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">10</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">1</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">2</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">15</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">-1</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">-987654321</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">9223372036854775807</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">-9223372036854775808</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">0</field></doc></add>");
assertU("<commit/>");
assertQ(req("id:44")
,"*[count(//doc)=10]"
);
- assertQ(req("num_l:9223372036854775807")
+ assertQ(req("num_l1:9223372036854775807")
,"//@numFound[.='1'] "
,"//long[.='9223372036854775807']"
);
- assertQ(req("num_l:\"-9223372036854775808\"")
+ assertQ(req("num_l1:\"-9223372036854775808\"")
,"//@numFound[.='1'] "
,"//long[.='-9223372036854775808']"
);
- assertQ(req("id:44;num_l asc;")
+ assertQ(req("id:44;num_l1 asc;")
,"//doc[1]/long[.='-9223372036854775808'] "
,"//doc[last()]/long[.='9223372036854775807']"
);
- assertQ(req("id:44;num_l desc;")
+ assertQ(req("id:44;num_l1 desc;")
,"//doc[1]/long[.='9223372036854775807'] "
,"//doc[last()]/long[.='-9223372036854775808']"
);
- assertQ(req("num_l:[-1 TO 9]")
+ assertQ(req("num_l1:[-1 TO 9]")
,"*[count(//doc)=4]"
);
- assertQ(req("num_l:[-9223372036854775808 TO 9223372036854775807]")
+ assertQ(req("num_l1:[-9223372036854775808 TO 9223372036854775807]")
,"*[count(//doc)=10]"
);
- assertQ(req("num_l:[-10 TO -1]")
+ assertQ(req("num_l1:[-10 TO -1]")
,"*[count(//doc)=1]"
);
// test binary float ranges and sorting
assertU("<delete><id>44</id></delete>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf\">1.4142135</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf\">Infinity</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf\">-Infinity</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf\">NaN</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf\">2</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf\">-1</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf\">-987654321</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf\">-999999.99</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf\">-1e20</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf\">0</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf1\">1.4142135</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf1\">Infinity</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf1\">-Infinity</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf1\">NaN</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf1\">2</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf1\">-1</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf1\">-987654321</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf1\">-999999.99</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf1\">-1e20</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sf1\">0</field></doc></add>");
assertU("<commit/>");
assertQ(req("id:44")
,"*[count(//doc)=10]"
);
- assertQ(req("num_sf:Infinity")
+ assertQ(req("num_sf1:Infinity")
,"//@numFound[.='1'] "
,"//float[.='Infinity']"
);
- assertQ(req("num_sf:\"-Infinity\"")
+ assertQ(req("num_sf1:\"-Infinity\"")
,"//@numFound[.='1'] "
,"//float[.='-Infinity']"
);
- assertQ(req("num_sf:\"NaN\"")
+ assertQ(req("num_sf1:\"NaN\"")
,"//@numFound[.='1'] "
,"//float[.='NaN']"
);
- assertQ(req("num_sf:\"-1e20\"")
+ assertQ(req("num_sf1:\"-1e20\"")
,"//@numFound[.='1']"
);
- assertQ(req("id:44;num_sf asc;")
+ assertQ(req("id:44;num_sf1 asc;")
,"//doc[1]/float[.='-Infinity'] "
,"//doc[last()]/float[.='NaN']"
);
- assertQ(req("id:44;num_sf desc;")
+ assertQ(req("id:44;num_sf1 desc;")
,"//doc[1]/float[.='NaN'] "
,"//doc[last()]/float[.='-Infinity']"
);
- assertQ(req("num_sf:[-1 TO 2]")
+ assertQ(req("num_sf1:[-1 TO 2]")
,"*[count(//doc)=4]"
);
- assertQ(req("num_sf:[-Infinity TO Infinity]")
+ assertQ(req("num_sf1:[-Infinity TO Infinity]")
,"*[count(//doc)=9]"
);
@@ -644,50 +644,50 @@ public class ConvertedLegacyTest extends
// test binary double ranges and sorting
assertU("<delete><id>44</id></delete>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd\">1.4142135</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd\">Infinity</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd\">-Infinity</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd\">NaN</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd\">2</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd\">-1</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd\">1e-100</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd\">-999999.99</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd\">-1e100</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd\">0</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd1\">1.4142135</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd1\">Infinity</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd1\">-Infinity</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd1\">NaN</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd1\">2</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd1\">-1</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd1\">1e-100</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd1\">-999999.99</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd1\">-1e100</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_sd1\">0</field></doc></add>");
assertU("<commit/>");
assertQ(req("id:44")
,"*[count(//doc)=10]"
);
- assertQ(req("num_sd:Infinity")
+ assertQ(req("num_sd1:Infinity")
,"//@numFound[.='1'] "
,"//double[.='Infinity']"
);
- assertQ(req("num_sd:\"-Infinity\"")
+ assertQ(req("num_sd1:\"-Infinity\"")
,"//@numFound[.='1'] "
,"//double[.='-Infinity']"
);
- assertQ(req("num_sd:\"NaN\"")
+ assertQ(req("num_sd1:\"NaN\"")
,"//@numFound[.='1'] "
,"//double[.='NaN']"
);
- assertQ(req("num_sd:\"-1e100\"")
+ assertQ(req("num_sd1:\"-1e100\"")
,"//@numFound[.='1']"
);
- assertQ(req("num_sd:\"1e-100\"")
+ assertQ(req("num_sd1:\"1e-100\"")
,"//@numFound[.='1']"
);
- assertQ(req("id:44;num_sd asc;")
+ assertQ(req("id:44;num_sd1 asc;")
,"//doc[1]/double[.='-Infinity'] "
,"//doc[last()]/double[.='NaN']"
);
- assertQ(req("id:44;num_sd desc;")
+ assertQ(req("id:44;num_sd1 desc;")
,"//doc[1]/double[.='NaN'] "
,"//doc[last()]/double[.='-Infinity']"
);
- assertQ(req("num_sd:[-1 TO 2]")
+ assertQ(req("num_sd1:[-1 TO 2]")
,"*[count(//doc)=5]"
);
- assertQ(req("num_sd:[-Infinity TO Infinity]")
+ assertQ(req("num_sd1:[-Infinity TO Infinity]")
,"*[count(//doc)=9]"
);
@@ -695,38 +695,38 @@ public class ConvertedLegacyTest extends
// test sorting on multiple fields
assertU("<delete><id>44</id></delete>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i\">10</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i\">1</field><field name=\"b_i\">100</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i\">-1</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i\">15</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i\">1</field><field name=\"b_i\">50</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i\">0</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i1\">10</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i1\">1</field><field name=\"b_i1\">100</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i1\">-1</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i1\">15</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i1\">1</field><field name=\"b_i1\">50</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i1\">0</field></doc></add>");
assertU("<commit/>");
assertQ(req("id:44")
,"*[count(//doc)=6]"
);
- assertQ(req("id:44; a_i asc,b_i desc")
+ assertQ(req("id:44; a_i1 asc,b_i1 desc")
,"*[count(//doc)=6] "
,"//doc[3]/int[.='100'] "
,"//doc[4]/int[.='50']"
);
- assertQ(req("id:44;a_i asc , b_i asc;")
+ assertQ(req("id:44;a_i1 asc , b_i1 asc;")
,"*[count(//doc)=6] "
,"//doc[3]/int[.='50'] "
,"//doc[4]/int[.='100']"
);
- assertQ(req("id:44;a_i asc;")
+ assertQ(req("id:44;a_i1 asc;")
,"*[count(//doc)=6] "
,"//doc[1]/int[.='-1'] "
,"//doc[last()]/int[.='15']"
);
- assertQ(req("id:44;a_i asc , score top;")
+ assertQ(req("id:44;a_i1 asc , score top;")
,"*[count(//doc)=6] "
,"//doc[1]/int[.='-1'] "
,"//doc[last()]/int[.='15']"
);
- assertQ(req("id:44; score top , a_i top, b_i bottom ;")
+ assertQ(req("id:44; score top , a_i1 top, b_i1 bottom ;")
,"*[count(//doc)=6] "
,"//doc[last()]/int[.='-1'] "
,"//doc[1]/int[.='15'] "
@@ -738,13 +738,13 @@ public class ConvertedLegacyTest extends
// test sorting with some docs missing the sort field
assertU("<delete><query>id_i:[1000 TO 1010]</query></delete>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1000</field><field name=\"a_i\">1</field><field name=\"nullfirst\">Z</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1001</field><field name=\"a_i\">10</field><field name=\"nullfirst\">A</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1002</field><field name=\"a_i\">1</field><field name=\"b_si\">100</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1003</field><field name=\"a_i\">-1</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1004</field><field name=\"a_i\">15</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1005</field><field name=\"a_i\">1</field><field name=\"b_si\">50</field></doc></add>");
- assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1006</field><field name=\"a_i\">0</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1000</field><field name=\"a_i1\">1</field><field name=\"nullfirst\">Z</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1001</field><field name=\"a_i1\">10</field><field name=\"nullfirst\">A</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1002</field><field name=\"a_i1\">1</field><field name=\"b_si\">100</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1003</field><field name=\"a_i1\">-1</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1004</field><field name=\"a_i1\">15</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1005</field><field name=\"a_i1\">1</field><field name=\"b_si\">50</field></doc></add>");
+ assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1006</field><field name=\"a_i1\">0</field></doc></add>");
assertU("<commit/>");
assertQ(req("id_i:[1000 TO 1010]")
,"*[count(//doc)=7]"
@@ -759,13 +759,13 @@ public class ConvertedLegacyTest extends
,"//doc[1]/int[.='100'] "
,"//doc[2]/int[.='50']"
);
- assertQ(req("id_i:[1000 TO 1010]; a_i asc,b_si desc")
+ assertQ(req("id_i:[1000 TO 1010]; a_i1 asc,b_si desc")
,"*[count(//doc)=7] "
,"//doc[3]/int[.='100'] "
,"//doc[4]/int[.='50'] "
,"//doc[5]/int[.='1000']"
);
- assertQ(req("id_i:[1000 TO 1010]; a_i asc,b_si asc")
+ assertQ(req("id_i:[1000 TO 1010]; a_i1 asc,b_si asc")
,"*[count(//doc)=7] "
,"//doc[3]/int[.='50'] "
,"//doc[4]/int[.='100'] "
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/JSONTestUtil.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/JSONTestUtil.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/JSONTestUtil.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/JSONTestUtil.java Wed Feb 9 09:35:27 2011
@@ -135,14 +135,16 @@ class CollectionTester {
if (!expected.equals(val)) {
// make an exception for some numerics
- if (expected instanceof Integer && val instanceof Long || expected instanceof Long && val instanceof Integer
+ if ((expected instanceof Integer && val instanceof Long || expected instanceof Long && val instanceof Integer)
&& ((Number)expected).longValue() == ((Number)val).longValue())
{
- // OK
- } else if (expected instanceof Float && val instanceof Double || expected instanceof Double && val instanceof Float
- && ((Number)expected).doubleValue() == ((Number)val).doubleValue())
- {
- // OK
+ return true;
+ } else if ((expected instanceof Float && val instanceof Double || expected instanceof Double && val instanceof Float)) {
+ double a = ((Number)expected).doubleValue();
+ double b = ((Number)val).doubleValue();
+ if (Double.compare(a,b) == 0) return true;
+ if (Math.abs(a-b) < 1e-5) return true;
+ return false;
} else {
setErr("mismatch: '" + expected + "'!='" + val + "'");
return false;
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/SolrTestCaseJ4.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/SolrTestCaseJ4.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/SolrTestCaseJ4.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/SolrTestCaseJ4.java Wed Feb 9 09:35:27 2011
@@ -22,6 +22,7 @@ package org.apache.solr;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.noggit.CharArr;
import org.apache.noggit.JSONUtil;
+import org.apache.noggit.ObjectBuilder;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.SolrInputField;
@@ -602,6 +603,7 @@ public abstract class SolrTestCaseJ4 ext
/** Neccessary to make method signatures un-ambiguous */
public static class XmlDoc {
public String xml;
+ @Override
public String toString() { return xml; }
}
@@ -727,6 +729,7 @@ public abstract class SolrTestCaseJ4 ext
public int order; // the order this document was added to the index
+ @Override
public String toString() {
return "Doc("+order+"):"+fields.toString();
}
@@ -780,6 +783,7 @@ public abstract class SolrTestCaseJ4 ext
public static class Fld {
public FldType ftype;
public List<Comparable> vals;
+ @Override
public String toString() {
return ftype.fname + "=" + (vals.size()==1 ? vals.get(0).toString() : vals.toString());
}
@@ -834,17 +838,9 @@ public abstract class SolrTestCaseJ4 ext
// commit an average of 10 times for large sets, or 10% of the time for small sets
int commitOneOutOf = Math.max(nDocs/10, 10);
-
- // find the max order (docid) and start from there
- int order = -1;
- for (Doc doc : model.values()) {
- order = Math.max(order, doc.order);
- }
- order++;
-
for (int i=0; i<nDocs; i++) {
Doc doc = createDoc(descriptor);
- doc.order = order++;
+ // doc.order = order++;
updateJ(toJSON(doc), null);
model.put(doc.id, doc);
@@ -867,6 +863,25 @@ public abstract class SolrTestCaseJ4 ext
assertU(commit());
}
+ // merging segments no longer selects just adjacent segments hence ids (doc.order) can be shuffled.
+ // we need to look at the index to determine the order.
+ String responseStr = h.query(req("q","*:*", "fl","id", "sort","_docid_ asc", "rows",Integer.toString(model.size()*2), "wt","json", "indent","true"));
+ Object response = ObjectBuilder.fromJSON(responseStr);
+
+ response = ((Map)response).get("response");
+ response = ((Map)response).get("docs");
+ List<Map> docList = (List<Map>)response;
+ int order = 0;
+ for (Map doc : docList) {
+ Object id = doc.get("id");
+ Doc modelDoc = model.get(id);
+ if (modelDoc == null) continue; // may be some docs in the index that aren't modeled
+ modelDoc.order = order++;
+ }
+
+ // make sure we updated the order of all docs in the model
+ assertEquals(order, model.size());
+
return model;
}
@@ -1052,10 +1067,18 @@ public abstract class SolrTestCaseJ4 ext
static String determineSourceHome() {
// ugly, ugly hack to determine the example home without depending on the CWD
// this is needed for example/multicore tests which reside outside the classpath
- File base = getFile("solr/conf/");
+ File base = getFile("solr/conf/").getAbsoluteFile();
while (!new File(base, "solr/CHANGES.txt").exists()) {
base = base.getParentFile();
}
return new File(base, "solr/").getAbsolutePath();
}
+
+ public static Throwable getRootCause(Throwable t) {
+ Throwable result = t;
+ for (Throwable cause = t; null != cause; cause = cause.getCause()) {
+ result = cause;
+ }
+ return result;
+ }
}
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestDistributedSearch.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestDistributedSearch.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestDistributedSearch.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestDistributedSearch.java Wed Feb 9 09:35:27 2011
@@ -38,7 +38,7 @@ public class TestDistributedSearch exten
String ndouble = "n_d";
String tdouble = "n_td";
String nlong = "n_l";
- String tlong = "n_tl";
+ String tlong = "other_tl1";
String ndate = "n_dt";
String tdate = "n_tdt";
@@ -95,10 +95,11 @@ public class TestDistributedSearch exten
// these queries should be exactly ordered and scores should exactly match
query("q","*:*", "sort",i1+" desc");
+ query("q","*:*", "sort","{!func}add("+i1+",5)"+" desc");
query("q","*:*", "sort",i1+" asc");
query("q","*:*", "sort",i1+" desc", "fl","*,score");
- query("q","*:*", "sort",tlong+" asc", "fl","score"); // test legacy behavior - "score"=="*,score"
- query("q","*:*", "sort",tlong+" desc");
+ query("q","*:*", "sort","n_tl1 asc", "fl","score"); // test legacy behavior - "score"=="*,score"
+ query("q","*:*", "sort","n_tl1 desc");
handle.put("maxScore", SKIPVAL);
query("q","{!func}"+i1);// does not expect maxScore. So if it comes ,ignore it. JavaBinCodec.writeSolrDocumentList()
//is agnostic of request params.
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestGroupingSearch.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestGroupingSearch.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestGroupingSearch.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestGroupingSearch.java Wed Feb 9 09:35:27 2011
@@ -30,6 +30,10 @@ import java.util.*;
public class TestGroupingSearch extends SolrTestCaseJ4 {
+ public static final String FOO_STRING_FIELD = "foo_s1";
+ public static final String SMALL_STRING_FIELD = "small_s1";
+ public static final String SMALL_INT_FIELD = "small_i";
+
@BeforeClass
public static void beforeTests() throws Exception {
initCore("solrconfig.xml","schema12.xml");
@@ -376,9 +380,9 @@ public class TestGroupingSearch extends
types.add(new FldType("id",ONE_ONE, new SVal('A','Z',4,4)));
types.add(new FldType("score_f",ONE_ONE, new FVal(1,100))); // field used to score
types.add(new FldType("foo_i",ZERO_ONE, new IRange(0,indexSize)));
- types.add(new FldType("foo_s",ZERO_ONE, new SVal('a','z',1,2)));
- types.add(new FldType("small_s",ZERO_ONE, new SVal('a',(char)('c'+indexSize/10),1,1)));
- types.add(new FldType("small_i",ZERO_ONE, new IRange(0,5+indexSize/10)));
+ types.add(new FldType(FOO_STRING_FIELD,ZERO_ONE, new SVal('a','z',1,2)));
+ types.add(new FldType(SMALL_STRING_FIELD,ZERO_ONE, new SVal('a',(char)('c'+indexSize/10),1,1)));
+ types.add(new FldType(SMALL_INT_FIELD,ZERO_ONE, new IRange(0,5+indexSize/10)));
clearIndex();
Map<Comparable, Doc> model = indexDocs(types, null, indexSize);
@@ -389,36 +393,36 @@ public class TestGroupingSearch extends
clearIndex();
model.clear();
Doc d1 = createDoc(types);
- d1.getValues("small_s").set(0,"c");
- d1.getValues("small_i").set(0,5);
+ d1.getValues(SMALL_STRING_FIELD).set(0,"c");
+ d1.getValues(SMALL_INT_FIELD).set(0,5);
d1.order = 0;
updateJ(toJSON(d1), params("commit","true"));
model.put(d1.id, d1);
d1 = createDoc(types);
- d1.getValues("small_s").set(0,"b");
- d1.getValues("small_i").set(0,5);
+ d1.getValues(SMALL_STRING_FIELD).set(0,"b");
+ d1.getValues(SMALL_INT_FIELD).set(0,5);
d1.order = 1;
updateJ(toJSON(d1), params("commit","false"));
model.put(d1.id, d1);
d1 = createDoc(types);
- d1.getValues("small_s").set(0,"c");
- d1.getValues("small_i").set(0,5);
+ d1.getValues(SMALL_STRING_FIELD).set(0,"c");
+ d1.getValues(SMALL_INT_FIELD).set(0,5);
d1.order = 2;
updateJ(toJSON(d1), params("commit","false"));
model.put(d1.id, d1);
d1 = createDoc(types);
- d1.getValues("small_s").set(0,"c");
- d1.getValues("small_i").set(0,5);
+ d1.getValues(SMALL_STRING_FIELD).set(0,"c");
+ d1.getValues(SMALL_INT_FIELD).set(0,5);
d1.order = 3;
updateJ(toJSON(d1), params("commit","false"));
model.put(d1.id, d1);
d1 = createDoc(types);
- d1.getValues("small_s").set(0,"b");
- d1.getValues("small_i").set(0,2);
+ d1.getValues(SMALL_STRING_FIELD).set(0,"b");
+ d1.getValues(SMALL_INT_FIELD).set(0,2);
d1.order = 4;
updateJ(toJSON(d1), params("commit","true"));
model.put(d1.id, d1);
@@ -447,11 +451,11 @@ public class TestGroupingSearch extends
// Test specific case
if (false) {
- groupField="small_i";
- sortComparator=createComparator(Arrays.asList(createComparator("small_s", true, true, false, true)));
- sortStr = "small_s asc";
- groupComparator = createComparator(Arrays.asList(createComparator("small_s", true, true, false, false)));
- groupSortStr = "small_s asc";
+ groupField=SMALL_INT_FIELD;
+ sortComparator=createComparator(Arrays.asList(createComparator(SMALL_STRING_FIELD, true, true, false, true)));
+ sortStr = SMALL_STRING_FIELD + " asc";
+ groupComparator = createComparator(Arrays.asList(createComparator(SMALL_STRING_FIELD, true, true, false, false)));
+ groupSortStr = SMALL_STRING_FIELD + " asc";
rows=1; start=0; group_offset=1; group_limit=1;
}
@@ -526,8 +530,7 @@ public class TestGroupingSearch extends
Map<String,Object> resultSet = new LinkedHashMap<String,Object>();
group.put("doclist", resultSet);
resultSet.put("numFound", grp.docs.size());
- resultSet.put("start", start);
-
+ resultSet.put("start", group_offset);
List docs = new ArrayList();
resultSet.put("docs", docs);
for (int j=group_offset; j<grp.docs.size(); j++) {
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestPluginEnable.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestPluginEnable.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestPluginEnable.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestPluginEnable.java Wed Feb 9 09:35:27 2011
@@ -1,5 +1,22 @@
package org.apache.solr;
+/**
+ * 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.
+ */
+
import org.apache.solr.client.solrj.SolrServerException;
import org.junit.BeforeClass;
import org.junit.Test;
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestTrie.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestTrie.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestTrie.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestTrie.java Wed Feb 9 09:35:27 2011
@@ -41,6 +41,7 @@ public class TestTrie extends SolrTestCa
initCore("solrconfig.xml","schema-trie.xml");
}
+ @Override
@After
public void tearDown() throws Exception {
clearIndex();
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/LengthFilterTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/LengthFilterTest.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/LengthFilterTest.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/LengthFilterTest.java Wed Feb 9 09:35:27 2011
@@ -31,9 +31,19 @@ public class LengthFilterTest extends Ba
Map<String, String> args = new HashMap<String, String>();
args.put(LengthFilterFactory.MIN_KEY, String.valueOf(4));
args.put(LengthFilterFactory.MAX_KEY, String.valueOf(10));
+ // default: args.put("enablePositionIncrements", "false");
factory.init(args);
String test = "foo foobar super-duper-trooper";
TokenStream stream = factory.create(new WhitespaceTokenizer(DEFAULT_VERSION, new StringReader(test)));
- assertTokenStreamContents(stream, new String[] { "foobar" });
+ assertTokenStreamContents(stream, new String[] { "foobar" }, new int[] { 1 });
+
+ factory = new LengthFilterFactory();
+ args = new HashMap<String, String>();
+ args.put(LengthFilterFactory.MIN_KEY, String.valueOf(4));
+ args.put(LengthFilterFactory.MAX_KEY, String.valueOf(10));
+ args.put("enablePositionIncrements", "true");
+ factory.init(args);
+ stream = factory.create(new WhitespaceTokenizer(DEFAULT_VERSION, new StringReader(test)));
+ assertTokenStreamContents(stream, new String[] { "foobar" }, new int[] { 2 });
}
}
\ No newline at end of file
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/SnowballPorterFilterFactoryTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/SnowballPorterFilterFactoryTest.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/SnowballPorterFilterFactoryTest.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/SnowballPorterFilterFactoryTest.java Wed Feb 9 09:35:27 2011
@@ -33,7 +33,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.ArrayList;
-import java.util.Collections;
public class SnowballPorterFilterFactoryTest extends BaseTokenTestCase {
@@ -59,37 +58,6 @@ public class SnowballPorterFilterFactory
assertTokenStreamContents(stream, gold);
}
- /**
- * Tests the protected words mechanism of EnglishPorterFilterFactory
- */
- @Deprecated
- public void testProtectedOld() throws Exception {
- EnglishStemmer stemmer = new EnglishStemmer();
- String[] test = {"The", "fledgling", "banks", "were", "counting", "on", "a", "big", "boom", "in", "banking"};
- String[] gold = new String[test.length];
- for (int i = 0; i < test.length; i++) {
- if (test[i].equals("fledgling") == false && test[i].equals("banks") == false) {
- stemmer.setCurrent(test[i]);
- stemmer.stem();
- gold[i] = stemmer.getCurrent();
- } else {
- gold[i] = test[i];
- }
- }
-
- EnglishPorterFilterFactory factory = new EnglishPorterFilterFactory();
- Map<String, String> args = new HashMap<String, String>(DEFAULT_VERSION_PARAM);
- args.put(SnowballPorterFilterFactory.PROTECTED_TOKENS, "who-cares.txt");
- factory.init(args);
- List<String> lines = new ArrayList<String>();
- Collections.addAll(lines, "banks", "fledgling");
- factory.inform(new LinesMockSolrResourceLoader(lines));
- Tokenizer tokenizer = new WhitespaceTokenizer(DEFAULT_VERSION,
- new StringReader(StrUtils.join(Arrays.asList(test), ' ')));
- TokenStream stream = factory.create(tokenizer);
- assertTokenStreamContents(stream, gold);
- }
-
class LinesMockSolrResourceLoader implements ResourceLoader {
List<String> lines;
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/TestMultiWordSynonyms.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/TestMultiWordSynonyms.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/TestMultiWordSynonyms.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/TestMultiWordSynonyms.java Wed Feb 9 09:35:27 2011
@@ -1,3 +1,20 @@
+/**
+ * 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.core.WhitespaceTokenizer;
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/TestRemoveDuplicatesTokenFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/TestRemoveDuplicatesTokenFilterFactory.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/TestRemoveDuplicatesTokenFilterFactory.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/analysis/TestRemoveDuplicatesTokenFilterFactory.java Wed Feb 9 09:35:27 2011
@@ -48,6 +48,7 @@ public class TestRemoveDuplicatesTokenFi
CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
OffsetAttribute offsetAtt = addAttribute(OffsetAttribute.class);
PositionIncrementAttribute posIncAtt = addAttribute(PositionIncrementAttribute.class);
+ @Override
public boolean incrementToken() {
if (toks.hasNext()) {
clearAttributes();