You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2014/01/17 18:23:44 UTC
svn commit: r1559196 [18/19] - in /lucene/dev/branches/lucene5376: ./
dev-tools/ dev-tools/idea/solr/contrib/morphlines-cell/
dev-tools/maven/lucene/facet/ lucene/ lucene/analysis/
lucene/analysis/common/ lucene/analysis/common/src/java/org/apache/luce...
Modified: lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java Fri Jan 17 17:23:33 2014
@@ -93,6 +93,8 @@ public class TopGroupsResultTransformer
public Map<String, ?> transformToNative(NamedList<NamedList> shardResponse, Sort groupSort, Sort sortWithinGroup, String shard) {
Map<String, Object> result = new HashMap<String, Object>();
+ final IndexSchema schema = rb.req.getSearcher().getSchema();
+
for (Map.Entry<String, NamedList> entry : shardResponse) {
String key = entry.getKey();
NamedList commandResult = entry.getValue();
@@ -124,6 +126,15 @@ public class TopGroupsResultTransformer
Object sortValuesVal = document.get("sortValues");
if (sortValuesVal != null) {
sortValues = ((List) sortValuesVal).toArray();
+ for (int k = 0; k < sortValues.length; k++) {
+ SchemaField field = groupSort.getSort()[k].getField() != null ? schema.getFieldOrNull(groupSort.getSort()[k].getField()) : null;
+ if (field != null) {
+ FieldType fieldType = field.getType();
+ if (sortValues[k] != null) {
+ sortValues[k] = fieldType.unmarshalSortValue(sortValues[k]);
+ }
+ }
+ }
}
else {
log.warn("doc {} has null 'sortValues'", document);
@@ -158,6 +169,15 @@ public class TopGroupsResultTransformer
score = Float.NaN;
}
Object[] sortValues = ((List) document.get("sortValues")).toArray();
+ for (int k = 0; k < sortValues.length; k++) {
+ SchemaField field = sortWithinGroup.getSort()[k].getField() != null ? schema.getFieldOrNull(sortWithinGroup.getSort()[k].getField()) : null;
+ if (field != null) {
+ FieldType fieldType = field.getType();
+ if (sortValues[k] != null) {
+ sortValues[k] = fieldType.unmarshalSortValue(sortValues[k]);
+ }
+ }
+ }
scoreDocs[j++] = new ShardDoc(score, sortValues, uniqueId, shard);
}
@@ -217,12 +237,8 @@ public class TopGroupsResultTransformer
SchemaField field = sortWithinGroup.getSort()[j].getField() != null ? schema.getFieldOrNull(sortWithinGroup.getSort()[j].getField()) : null;
if (field != null) {
FieldType fieldType = field.getType();
- if (sortValue instanceof BytesRef) {
- UnicodeUtil.UTF8toUTF16((BytesRef)sortValue, spare);
- String indexedValue = spare.toString();
- sortValue = fieldType.toObject(field.createField(fieldType.indexedToReadable(indexedValue), 1.0f));
- } else if (sortValue instanceof String) {
- sortValue = fieldType.toObject(field.createField(fieldType.indexedToReadable((String) sortValue), 1.0f));
+ if (sortValue != null) {
+ sortValue = fieldType.marshalSortValue(sortValue);
}
}
convertedSortValues[j] = sortValue;
@@ -272,12 +288,8 @@ public class TopGroupsResultTransformer
? schema.getFieldOrNull(groupSort.getSort()[j].getField()) : null;
if (field != null) {
FieldType fieldType = field.getType();
- if (sortValue instanceof BytesRef) {
- UnicodeUtil.UTF8toUTF16((BytesRef)sortValue, spare);
- String indexedValue = spare.toString();
- sortValue = fieldType.toObject(field.createField(fieldType.indexedToReadable(indexedValue), 1.0f));
- } else if (sortValue instanceof String) {
- sortValue = fieldType.toObject(field.createField(fieldType.indexedToReadable((String) sortValue), 1.0f));
+ if (sortValue != null) {
+ sortValue = fieldType.marshalSortValue(sortValue);
}
}
convertedSortValues[j] = sortValue;
Modified: lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java Fri Jan 17 17:23:33 2014
@@ -136,6 +136,9 @@ public class SolrDispatchFilter implemen
// catch this so our filter still works
log.error( "Could not start Solr. Check solr/home property and the logs");
SolrCore.log( t );
+ if (t instanceof Error) {
+ throw (Error) t;
+ }
}
log.info("SolrDispatchFilter.init() done");
@@ -434,17 +437,25 @@ public class SolrDispatchFilter implemen
}
catch (Throwable ex) {
sendError( core, solrReq, request, (HttpServletResponse)response, ex );
- return;
- }
- finally {
- if( solrReq != null ) {
- log.debug("Closing out SolrRequest: {}", solrReq);
- solrReq.close();
+ if (ex instanceof Error) {
+ throw (Error) ex;
}
- if (core != null) {
- core.close();
+ return;
+ } finally {
+ try {
+ if (solrReq != null) {
+ log.debug("Closing out SolrRequest: {}", solrReq);
+ solrReq.close();
+ }
+ } finally {
+ try {
+ if (core != null) {
+ core.close();
+ }
+ } finally {
+ SolrRequestInfo.clearRequestInfo();
+ }
}
- SolrRequestInfo.clearRequestInfo();
}
}
@@ -758,6 +769,7 @@ public class SolrDispatchFilter implemen
ServletRequest request,
HttpServletResponse response,
Throwable ex) throws IOException {
+ Exception exp = null;
SolrCore localCore = null;
try {
SolrQueryResponse solrResp = new SolrQueryResponse();
@@ -786,15 +798,21 @@ public class SolrDispatchFilter implemen
QueryResponseWriter writer = core.getQueryResponseWriter(req);
writeResponse(solrResp, response, writer, req, Method.GET);
}
- catch( Throwable t ) { // This error really does not matter
- SimpleOrderedMap info = new SimpleOrderedMap();
- int code = ResponseUtils.getErrorInfo(ex, info, log);
- response.sendError( code, info.toString() );
+ catch (Exception e) { // This error really does not matter
+ exp = e;
} finally {
- if (core == null && localCore != null) {
- localCore.close();
+ try {
+ if (exp != null) {
+ SimpleOrderedMap info = new SimpleOrderedMap();
+ int code = ResponseUtils.getErrorInfo(ex, info, log);
+ response.sendError(code, info.toString());
+ }
+ } finally {
+ if (core == null && localCore != null) {
+ localCore.close();
+ }
}
- }
+ }
}
//---------------------------------------------------------------------
Modified: lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java Fri Jan 17 17:23:33 2014
@@ -17,16 +17,16 @@
package org.apache.solr.servlet;
+import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
-import java.io.ByteArrayOutputStream;
+import java.net.URL;
import java.nio.ByteBuffer;
import java.nio.charset.CharacterCodingException;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import java.nio.charset.CodingErrorAction;
-import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -36,8 +36,6 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletRequest;
@@ -53,10 +51,12 @@ import org.apache.solr.common.params.Sol
import org.apache.solr.common.util.ContentStream;
import org.apache.solr.common.util.ContentStreamBase;
import org.apache.solr.common.util.FastInputStream;
-import org.apache.solr.core.Config;
+import org.apache.solr.core.SolrConfig;
import org.apache.solr.core.SolrCore;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.request.SolrQueryRequestBase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class SolrRequestParsers
@@ -89,7 +89,7 @@ public class SolrRequestParsers
* Pass in an xml configuration. A null configuration will enable
* everything with maximum values.
*/
- public SolrRequestParsers( Config globalConfig ) {
+ public SolrRequestParsers( SolrConfig globalConfig ) {
final int multipartUploadLimitKB, formUploadLimitKB;
if( globalConfig == null ) {
multipartUploadLimitKB = formUploadLimitKB = Integer.MAX_VALUE;
@@ -97,21 +97,16 @@ public class SolrRequestParsers
handleSelect = true;
addHttpRequestToContext = false;
} else {
- multipartUploadLimitKB = globalConfig.getInt(
- "requestDispatcher/requestParsers/@multipartUploadLimitInKB", 2048 );
+ multipartUploadLimitKB = globalConfig.getMultipartUploadLimitKB();
- formUploadLimitKB = globalConfig.getInt(
- "requestDispatcher/requestParsers/@formdataUploadLimitInKB", 2048 );
+ formUploadLimitKB = globalConfig.getFormUploadLimitKB();
- enableRemoteStreams = globalConfig.getBool(
- "requestDispatcher/requestParsers/@enableRemoteStreaming", false );
+ enableRemoteStreams = globalConfig.isEnableRemoteStreams();
// Let this filter take care of /select?xxx format
- handleSelect = globalConfig.getBool(
- "requestDispatcher/@handleSelect", true );
+ handleSelect = globalConfig.isHandleSelect();
- addHttpRequestToContext = globalConfig.getBool(
- "requestDispatcher/requestParsers/@addHttpRequestToContext", false );
+ addHttpRequestToContext = globalConfig.isAddHttpRequestToContext();
}
init(multipartUploadLimitKB, formUploadLimitKB);
}
Modified: lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/spelling/suggest/SolrSuggester.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/spelling/suggest/SolrSuggester.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/spelling/suggest/SolrSuggester.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/spelling/suggest/SolrSuggester.java Fri Jan 17 17:23:33 2014
@@ -179,7 +179,7 @@ public class SolrSuggester {
SuggesterResult res = new SuggesterResult();
List<LookupResult> suggestions = lookup.lookup(options.token, false, options.count);
- res.add(options.token.toString(), suggestions);
+ res.add(getName(), options.token.toString(), suggestions);
return res;
}
Modified: lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/spelling/suggest/SuggesterParams.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/spelling/suggest/SuggesterParams.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/spelling/suggest/SuggesterParams.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/spelling/suggest/SuggesterParams.java Fri Jan 17 17:23:33 2014
@@ -47,10 +47,23 @@ public interface SuggesterParams {
* Whether to build the index or not. Optional and false by default.
*/
public static final String SUGGEST_BUILD = SUGGEST_PREFIX + "build";
+
+ /**
+ * Whether to build the index or not for all suggesters in the component.
+ * Optional and false by default.
+ * This parameter does not need any suggest dictionary names to be specified
+ */
+ public static final String SUGGEST_BUILD_ALL = SUGGEST_PREFIX + "buildAll";
/**
* Whether to reload the index. Optional and false by default.
*/
public static final String SUGGEST_RELOAD = SUGGEST_PREFIX + "reload";
+ /**
+ * Whether to reload the index or not for all suggesters in the component.
+ * Optional and false by default.
+ * This parameter does not need any suggest dictionary names to be specified
+ */
+ public static final String SUGGEST_RELOAD_ALL = SUGGEST_PREFIX + "reloadAll";
}
Modified: lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/spelling/suggest/SuggesterResult.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/spelling/suggest/SuggesterResult.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/spelling/suggest/SuggesterResult.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/spelling/suggest/SuggesterResult.java Fri Jan 17 17:23:33 2014
@@ -17,7 +17,9 @@ package org.apache.solr.spelling.suggest
* limitations under the License.
*/
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -32,14 +34,19 @@ public class SuggesterResult {
public SuggesterResult() {}
/** token -> lookup results mapping*/
- private Map<String, List<LookupResult>> suggestions = new HashMap<String, List<LookupResult>>();
+ private Map<String, Map<String, List<LookupResult>>> suggestionsMap =
+ new HashMap<String, Map<String, List<LookupResult>>>();
/** Add suggestion results for <code>token</code> */
- public void add(String token, List<LookupResult> results) {
- List<LookupResult> res = this.suggestions.get(token);
+ public void add(String suggesterName, String token, List<LookupResult> results) {
+ Map<String, List<LookupResult>> suggesterRes = this.suggestionsMap.get(suggesterName);
+ if (suggesterRes == null) {
+ this.suggestionsMap.put(suggesterName, new HashMap<String, List<LookupResult>>());
+ }
+ List<LookupResult> res = this.suggestionsMap.get(suggesterName).get(token);
if (res == null) {
res = results;
- this.suggestions.put(token, res);
+ this.suggestionsMap.get(suggesterName).put(token, res);
}
}
@@ -48,15 +55,27 @@ public class SuggesterResult {
* null can be returned, if there are no lookup results
* for the <code>token</code>
* */
- public List<LookupResult> getLookupResult(String token) {
- return this.suggestions.get(token);
+ public List<LookupResult> getLookupResult(String suggesterName, String token) {
+ return (this.suggestionsMap.containsKey(suggesterName))
+ ? this.suggestionsMap.get(suggesterName).get(token)
+ : new ArrayList<LookupResult>();
}
/**
* Get the set of tokens that are present in the
* instance
*/
- public Set<String> getTokens() {
- return this.suggestions.keySet();
+ public Set<String> getTokens(String suggesterName) {
+ return (this.suggestionsMap.containsKey(suggesterName))
+ ? this.suggestionsMap.get(suggesterName).keySet()
+ : new HashSet<String>();
+ }
+
+ /**
+ * Get the set of suggesterNames for which this
+ * instance holds results
+ */
+ public Set<String> getSuggesterNames() {
+ return this.suggestionsMap.keySet();
}
}
Modified: lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java Fri Jan 17 17:23:33 2014
@@ -71,8 +71,8 @@ public final class DefaultSolrCoreState
indexWriter.close();
}
indexWriter = null;
- } catch (Throwable t) {
- log.error("Error during shutdown of writer.", t);
+ } catch (Exception e) {
+ log.error("Error during shutdown of writer.", e);
}
}
@@ -162,17 +162,17 @@ public final class DefaultSolrCoreState
try {
log.info("Closing old IndexWriter... core=" + coreName);
indexWriter.close();
- } catch (Throwable t) {
+ } catch (Exception e) {
SolrException.log(log, "Error closing old IndexWriter. core="
- + coreName, t);
+ + coreName, e);
}
} else {
try {
log.info("Rollback old IndexWriter... core=" + coreName);
indexWriter.rollback();
- } catch (Throwable t) {
+ } catch (Exception e) {
SolrException.log(log, "Error rolling back old IndexWriter. core="
- + coreName, t);
+ + coreName, e);
}
}
}
@@ -220,17 +220,17 @@ public final class DefaultSolrCoreState
try {
log.info("Closing old IndexWriter... core=" + coreName);
indexWriter.close();
- } catch (Throwable t) {
+ } catch (Exception e) {
SolrException.log(log, "Error closing old IndexWriter. core="
- + coreName, t);
+ + coreName, e);
}
} else {
try {
log.info("Rollback old IndexWriter... core=" + coreName);
indexWriter.rollback();
- } catch (Throwable t) {
+ } catch (Exception e) {
SolrException.log(log, "Error rolling back old IndexWriter. core="
- + coreName, t);
+ + coreName, e);
}
}
}
Modified: lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java Fri Jan 17 17:23:33 2014
@@ -751,6 +751,9 @@ public class DirectUpdateHandler2 extend
}
} catch (Throwable th) {
log.error("Error in final commit", th);
+ if (th instanceof OutOfMemoryError) {
+ throw (OutOfMemoryError) th;
+ }
}
// we went through the normal process to commit, so we don't have to artificially
@@ -759,6 +762,9 @@ public class DirectUpdateHandler2 extend
if (ulog != null) ulog.close(false);
} catch (Throwable th) {
log.error("Error closing log files", th);
+ if (th instanceof OutOfMemoryError) {
+ throw (OutOfMemoryError) th;
+ }
}
if (writer != null) writer.close();
Modified: lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java Fri Jan 17 17:23:33 2014
@@ -25,7 +25,6 @@ import java.util.List;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
-import org.apache.solr.client.solrj.impl.HttpSolrServer.RemoteSolrException;
import org.apache.solr.client.solrj.request.AbstractUpdateRequest;
import org.apache.solr.client.solrj.request.UpdateRequest;
import org.apache.solr.common.SolrException;
Modified: lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/SolrCoreState.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/SolrCoreState.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/SolrCoreState.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/SolrCoreState.java Fri Jan 17 17:23:33 2014
@@ -70,8 +70,8 @@ public abstract class SolrCoreState {
try {
log.info("Closing SolrCoreState");
close(closer);
- } catch (Throwable t) {
- log.error("Error closing SolrCoreState", t);
+ } catch (Exception e) {
+ log.error("Error closing SolrCoreState", e);
}
}
return close;
Modified: lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/SolrIndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/SolrIndexWriter.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/SolrIndexWriter.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/SolrIndexWriter.java Fri Jan 17 17:23:33 2014
@@ -134,14 +134,17 @@ public class SolrIndexWriter extends Ind
// don't allow interruption
continue;
} catch (Throwable t) {
+ if (t instanceof OutOfMemoryError) {
+ throw (OutOfMemoryError) t;
+ }
log.error("Error closing IndexWriter, trying rollback", t);
super.rollback();
}
if (IndexWriter.isLocked(directory)) {
try {
IndexWriter.unlock(directory);
- } catch (Throwable t) {
- log.error("Coud not unlock directory after seemingly failed IndexWriter#close()", t);
+ } catch (Exception e) {
+ log.error("Coud not unlock directory after seemingly failed IndexWriter#close()", e);
}
}
break;
Modified: lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/StreamingSolrServers.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/StreamingSolrServers.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/StreamingSolrServers.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/StreamingSolrServers.java Fri Jan 17 17:23:33 2014
@@ -31,9 +31,7 @@ import org.apache.solr.client.solrj.Solr
import org.apache.solr.client.solrj.impl.BinaryRequestWriter;
import org.apache.solr.client.solrj.impl.BinaryResponseParser;
import org.apache.solr.client.solrj.impl.ConcurrentUpdateSolrServer;
-import org.apache.solr.client.solrj.impl.HttpClientUtil;
import org.apache.solr.common.SolrException;
-import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.update.SolrCmdDistributor.Error;
import org.apache.solr.update.processor.DistributedUpdateProcessor;
import org.apache.solr.update.processor.DistributingUpdateProcessorFactory;
@@ -53,11 +51,6 @@ public class StreamingSolrServers {
public StreamingSolrServers(UpdateShardHandler updateShardHandler) {
this.updateExecutor = updateShardHandler.getUpdateExecutor();
- ModifiableSolrParams params = new ModifiableSolrParams();
- params.set(HttpClientUtil.PROP_FOLLOW_REDIRECTS, false);
- params.set(HttpClientUtil.PROP_CONNECTION_TIMEOUT, 30000);
- params.set(HttpClientUtil.PROP_USE_RETRY, false);
-
httpClient = updateShardHandler.getHttpClient();
}
Modified: lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/UpdateLog.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/UpdateLog.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/UpdateLog.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/UpdateLog.java Fri Jan 17 17:23:33 2014
@@ -421,7 +421,7 @@ public class UpdateLog implements Plugin
try {
RefCounted<SolrIndexSearcher> holder = uhandler.core.openNewSearcher(true, true);
holder.decref();
- } catch (Throwable e) {
+ } catch (Exception e) {
SolrException.log(log, "Error opening realtime searcher for deleteByQuery", e);
}
@@ -491,7 +491,7 @@ public class UpdateLog implements Plugin
try {
RefCounted<SolrIndexSearcher> holder = uhandler.core.openNewSearcher(true, true);
holder.decref();
- } catch (Throwable e) {
+ } catch (Exception e) {
SolrException.log(log, "Error opening realtime searcher for deleteByQuery", e);
}
@@ -512,7 +512,7 @@ public class UpdateLog implements Plugin
try {
RefCounted<SolrIndexSearcher> holder = uhandler.core.openNewSearcher(true, true);
holder.decref();
- } catch (Throwable e) {
+ } catch (Exception e) {
SolrException.log(log, "Error opening realtime searcher for deleteByQuery", e);
}
@@ -859,7 +859,7 @@ public class UpdateLog implements Plugin
synchronized (this) {
try {
ExecutorUtil.shutdownNowAndAwaitTermination(recoveryExecutor);
- } catch (Throwable e) {
+ } catch (Exception e) {
SolrException.log(log, e);
}
@@ -1222,7 +1222,7 @@ public class UpdateLog implements Plugin
recoveryInfo.errors++;
SolrException.log(log, e);
}
- } catch (Throwable e) {
+ } catch (Exception e) {
recoveryInfo.errors++;
SolrException.log(log, e);
} finally {
@@ -1295,7 +1295,7 @@ public class UpdateLog implements Plugin
SolrException.log(log,e);
} catch (IOException e) {
SolrException.log(log,e);
- } catch (Throwable e) {
+ } catch (Exception e) {
SolrException.log(log,e);
}
@@ -1381,7 +1381,7 @@ public class UpdateLog implements Plugin
recoveryInfo.errors++;
loglog.warn("REYPLAY_ERR: IOException reading log", ex);
// could be caused by an incomplete flush if recovering from log
- } catch (Throwable ex) {
+ } catch (Exception ex) {
recoveryInfo.errors++;
loglog.warn("REPLAY_ERR: Exception replaying log", ex);
// something wrong with the request?
Modified: lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/UpdateShardHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/UpdateShardHandler.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/UpdateShardHandler.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/UpdateShardHandler.java Fri Jan 17 17:23:33 2014
@@ -73,7 +73,7 @@ public class UpdateShardHandler {
public void close() {
try {
ExecutorUtil.shutdownAndAwaitTermination(updateExecutor);
- } catch (Throwable e) {
+ } catch (Exception e) {
SolrException.log(log, e);
} finally {
clientConnectionManager.shutdown();
Modified: lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java Fri Jan 17 17:23:33 2014
@@ -146,11 +146,11 @@ public class DistributedUpdateProcessor
private SolrCmdDistributor cmdDistrib;
- private boolean zkEnabled = false;
+ private final boolean zkEnabled;
private CloudDescriptor cloudDesc;
- private String collection;
- private ZkController zkController;
+ private final String collection;
+ private final ZkController zkController;
// these are setup at the start of each request processing
// method in this update processor
@@ -193,6 +193,8 @@ public class DistributedUpdateProcessor
if (cloudDesc != null) {
collection = cloudDesc.getCollectionName();
+ } else {
+ collection = null;
}
}
Modified: lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/util/SimplePostTool.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/util/SimplePostTool.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/util/SimplePostTool.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/java/org/apache/solr/util/SimplePostTool.java Fri Jan 17 17:23:33 2014
@@ -947,7 +947,7 @@ public class SimplePostTool {
public static String getXP(Node n, String xpath, boolean concatAll)
throws XPathExpressionException {
NodeList nodes = getNodesFromXP(n, xpath);
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
if (nodes.getLength() > 0) {
for(int i = 0; i < nodes.getLength() ; i++) {
sb.append(nodes.item(i).getNodeValue() + " ");
Modified: lucene/dev/branches/lucene5376/solr/core/src/test-files/solr/collection1/conf/solrconfig-phrasesuggest.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/test-files/solr/collection1/conf/solrconfig-phrasesuggest.xml?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/test-files/solr/collection1/conf/solrconfig-phrasesuggest.xml (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/test-files/solr/collection1/conf/solrconfig-phrasesuggest.xml Fri Jan 17 17:23:33 2014
@@ -102,6 +102,22 @@
</searchComponent>
+ <searchComponent class="solr.SuggestComponent" name="free_text_suggest">
+ <lst name="suggester">
+ <str name="name">free_text_suggest</str>
+ <str name="lookupImpl">FreeTextLookupFactory</str>
+ <str name="dictionaryImpl">FileDictionaryFactory</str>
+ <str name="storeDir">free_text_suggest</str>
+ <str name="buildOnCommit">false</str>
+ <str name="sourceLocation">freeTextSuggest.txt</str>
+
+ <!-- Suggester properties -->
+ <str name="separator"> </str>
+ <str name="suggestFreeTextAnalyzerFieldType">text</str>
+ <int name="ngrams">2</int>
+ </lst>
+
+ </searchComponent>
<!-- FuzzyLookup suggest component with FileDictionaryFactory -->
<searchComponent class="solr.SuggestComponent" name="fuzzy_suggest_analyzing_with_file_dict">
<lst name="suggester">
@@ -254,17 +270,26 @@
<requestHandler class="org.apache.solr.handler.component.SearchHandler" name="/fuzzy_suggest_analyzing_with_file_dict">
<lst name="defaults">
<str name="suggest">true</str>
- <str name="suggest.dictionary">fuzzy_suggest_analyzing_with_file_dict</str>
</lst>
<arr name="components">
<str>fuzzy_suggest_analyzing_with_file_dict</str>
</arr>
</requestHandler>
+
+
+ <requestHandler class="org.apache.solr.handler.component.SearchHandler" name="/free_text_suggest">
+ <lst name="defaults">
+ <str name="suggest">true</str>
+ </lst>
+ <arr name="components">
+ <str>free_text_suggest</str>
+ </arr>
+ </requestHandler>
+
<requestHandler class="org.apache.solr.handler.component.SearchHandler" name="/fuzzy_suggest_analyzing_with_high_freq_dict">
<lst name="defaults">
<str name="suggest">true</str>
- <str name="suggest.dictionary">fuzzy_suggest_analyzing_with_high_freq_dict</str>
</lst>
<arr name="components">
<str>fuzzy_suggest_analyzing_with_high_freq_dict</str>
Modified: lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java Fri Jan 17 17:23:33 2014
@@ -947,51 +947,6 @@ public class BasicFunctionalityTest exte
}
}
- @Ignore("See SOLR-1726")
- @Test
- public void testDeepPaging() throws Exception {
- for (int i = 0; i < 1000; i++){
- assertU(adoc("id", String.valueOf(i), "foo_t", English.intToEnglish(i)));
- }
- assertU(commit());
- SolrQueryRequest goldReq = null;
- try {
- goldReq = req("q", "foo_t:one", "rows", "50", "fl", "docid, score");
- SolrQueryResponse gold = h.queryAndResponse("standard", goldReq);
- ResultContext response = (ResultContext) gold.getValues().get("response");
- assertQ("page: " + 0 + " failed",
- req("q", "foo_t:one", "rows", "10", CommonParams.QT, "standard", "fl", "[docid], score"),
- "*[count(//doc)=10]");
- //ugh, what a painful way to get the document
- DocIterator iterator = response.docs.subset(9, 1).iterator();
- int lastDoc = iterator.nextDoc();
- float lastScore = iterator.score();
- for (int i = 1; i < 5; i++){
- //page through some results
- DocList subset = response.docs.subset(i * 10, 1);
- iterator = subset.iterator();
- int compareDoc = iterator.nextDoc();
- float compareScore = iterator.score();
- assertQ("page: " + i + " failed",
- req("q", "foo_t:one", CommonParams.QT, "standard", "fl", "[docid], score",
- "start", String.valueOf(i * 10), "rows", "1", //only get one doc, and then compare it to gold
- CommonParams.PAGEDOC, String.valueOf(lastDoc), CommonParams.PAGESCORE, String.valueOf(lastScore)),
- "*[count(//doc)=1]",
- "//float[@name='score'][.='" + compareScore + "']",
- "//int[@name='[docid]'][.='" + compareDoc + "']"
- );
- lastScore = compareScore;
- lastDoc = compareDoc;
-
- }
- } finally {
- if (goldReq != null ) {
- goldReq.close();
- }
- }
- }
-
-
// /** this doesn't work, but if it did, this is how we'd test it. */
// public void testOverwriteFalse() {
Modified: lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/TestRandomDVFaceting.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/TestRandomDVFaceting.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/TestRandomDVFaceting.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/TestRandomDVFaceting.java Fri Jan 17 17:23:33 2014
@@ -96,7 +96,7 @@ public class TestRandomDVFaceting extend
}
if (ids.size() == 0) return;
- StringBuffer sb = new StringBuffer("id:(");
+ StringBuilder sb = new StringBuilder("id:(");
for (String id : ids) {
sb.append(id).append(' ');
model.remove(id);
Modified: lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/TestRandomFaceting.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/TestRandomFaceting.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/TestRandomFaceting.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/TestRandomFaceting.java Fri Jan 17 17:23:33 2014
@@ -95,7 +95,7 @@ public class TestRandomFaceting extends
}
if (ids.size() == 0) return;
- StringBuffer sb = new StringBuffer("id:(");
+ StringBuilder sb = new StringBuilder("id:(");
for (String id : ids) {
sb.append(id).append(' ');
model.remove(id);
Modified: lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/analysis/LegacyHTMLStripCharFilterTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/analysis/LegacyHTMLStripCharFilterTest.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/analysis/LegacyHTMLStripCharFilterTest.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/analysis/LegacyHTMLStripCharFilterTest.java Fri Jan 17 17:23:33 2014
@@ -260,8 +260,8 @@ public class LegacyHTMLStripCharFilterTe
Analyzer analyzer = new Analyzer() {
@Override
- protected TokenStreamComponents createComponents(String fieldName, Reader reader) {
- Tokenizer tokenizer = new MockTokenizer(reader, MockTokenizer.WHITESPACE, false);
+ protected TokenStreamComponents createComponents(String fieldName) {
+ Tokenizer tokenizer = new MockTokenizer(MockTokenizer.WHITESPACE, false);
return new TokenStreamComponents(tokenizer, tokenizer);
}
Modified: lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/analysis/TestReversedWildcardFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/analysis/TestReversedWildcardFilterFactory.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/analysis/TestReversedWildcardFilterFactory.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/analysis/TestReversedWildcardFilterFactory.java Fri Jan 17 17:23:33 2014
@@ -66,7 +66,7 @@ public class TestReversedWildcardFilterF
String text = "simple text";
args.put("withOriginal", "true");
ReversedWildcardFilterFactory factory = new ReversedWildcardFilterFactory(args);
- TokenStream input = factory.create(new MockTokenizer(new StringReader(text), MockTokenizer.WHITESPACE, false));
+ TokenStream input = factory.create(whitespaceMockTokenizer(text));
assertTokenStreamContents(input,
new String[] { "\u0001elpmis", "simple", "\u0001txet", "text" },
new int[] { 1, 0, 1, 0 });
@@ -74,7 +74,7 @@ public class TestReversedWildcardFilterF
// now without original tokens
args.put("withOriginal", "false");
factory = new ReversedWildcardFilterFactory(args);
- input = factory.create(new MockTokenizer(new StringReader(text), MockTokenizer.WHITESPACE, false));
+ input = factory.create(whitespaceMockTokenizer(text));
assertTokenStreamContents(input,
new String[] { "\u0001elpmis", "\u0001txet" },
new int[] { 1, 1 });
Modified: lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/analysis/TestWordDelimiterFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/analysis/TestWordDelimiterFilterFactory.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/analysis/TestWordDelimiterFilterFactory.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/analysis/TestWordDelimiterFilterFactory.java Fri Jan 17 17:23:33 2014
@@ -211,13 +211,11 @@ public class TestWordDelimiterFilterFact
WordDelimiterFilterFactory factoryDefault = new WordDelimiterFilterFactory(args);
factoryDefault.inform(loader);
- TokenStream ts = factoryDefault.create(
- new MockTokenizer(new StringReader(testText), MockTokenizer.WHITESPACE, false));
+ TokenStream ts = factoryDefault.create(whitespaceMockTokenizer(testText));
BaseTokenStreamTestCase.assertTokenStreamContents(ts,
new String[] { "I", "borrowed", "5", "400", "00", "540000", "at", "25", "interest", "rate", "interestrate" });
- ts = factoryDefault.create(
- new MockTokenizer(new StringReader("foo\u200Dbar"), MockTokenizer.WHITESPACE, false));
+ ts = factoryDefault.create(whitespaceMockTokenizer("foo\u200Dbar"));
BaseTokenStreamTestCase.assertTokenStreamContents(ts,
new String[] { "foo", "bar", "foobar" });
@@ -235,14 +233,12 @@ public class TestWordDelimiterFilterFact
WordDelimiterFilterFactory factoryCustom = new WordDelimiterFilterFactory(args);
factoryCustom.inform(loader);
- ts = factoryCustom.create(
- new MockTokenizer(new StringReader(testText), MockTokenizer.WHITESPACE, false));
+ ts = factoryCustom.create(whitespaceMockTokenizer(testText));
BaseTokenStreamTestCase.assertTokenStreamContents(ts,
new String[] { "I", "borrowed", "$5,400.00", "at", "25%", "interest", "rate", "interestrate" });
/* test custom behavior with a char > 0x7F, because we had to make a larger byte[] */
- ts = factoryCustom.create(
- new MockTokenizer(new StringReader("foo\u200Dbar"), MockTokenizer.WHITESPACE, false));
+ ts = factoryCustom.create(whitespaceMockTokenizer("foo\u200Dbar"));
BaseTokenStreamTestCase.assertTokenStreamContents(ts,
new String[] { "foo\u200Dbar" });
}
Modified: lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/cloud/ChaosMonkeyShardSplitTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/cloud/ChaosMonkeyShardSplitTest.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/cloud/ChaosMonkeyShardSplitTest.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/cloud/ChaosMonkeyShardSplitTest.java Fri Jan 17 17:23:33 2014
@@ -184,23 +184,23 @@ public class ChaosMonkeyShardSplitTest e
Thread.sleep(800);
overseerClient.close();
overseerClient = electNewOverseer(zkAddress);
- } catch (Throwable e) {
+ } catch (Exception e) {
// e.printStackTrace();
}
}
try {
Thread.sleep(100);
- } catch (Throwable e) {
+ } catch (Exception e) {
// e.printStackTrace();
}
}
- } catch (Throwable t) {
+ } catch (Exception t) {
// ignore
} finally {
if (overseerClient != null) {
try {
overseerClient.close();
- } catch (Throwable t) {
+ } catch (Exception t) {
// ignore
}
}
Modified: lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/core/QueryResultKeyTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/core/QueryResultKeyTest.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/core/QueryResultKeyTest.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/core/QueryResultKeyTest.java Fri Jan 17 17:23:33 2014
@@ -17,6 +17,7 @@
package org.apache.solr.core;
+import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;
@@ -27,53 +28,175 @@ import org.apache.lucene.search.Query;
import org.apache.lucene.search.Sort;
import org.apache.lucene.search.SortField;
import org.apache.lucene.search.TermQuery;
+import org.apache.lucene.util._TestUtil;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.search.QueryResultKey;
import org.junit.Test;
public class QueryResultKeyTest extends SolrTestCaseJ4 {
- @Test
- public void testFiltersHashCode() {
+ public void testFiltersOutOfOrder1() {
// the hashcode should be the same even when the list
// of filters is in a different order
Sort sort = new Sort(new SortField("test", SortField.Type.INT));
- List<Query> filters = new ArrayList<Query>();
- filters.add(new TermQuery(new Term("test", "field")));
- filters.add(new TermQuery(new Term("test2", "field2")));
-
BooleanQuery query = new BooleanQuery();
query.add(new TermQuery(new Term("test", "field")), Occur.MUST);
+ List<Query> filters = Arrays.<Query>asList(new TermQuery(new Term("test", "field")),
+ new TermQuery(new Term("test2", "field2")));
QueryResultKey qrk1 = new QueryResultKey(query , filters, sort, 1);
- List<Query> filters2 = new ArrayList<Query>();
- filters2.add(new TermQuery(new Term("test2", "field2")));
- filters2.add(new TermQuery(new Term("test", "field")));
+ List<Query> filters2 = Arrays.<Query>asList(new TermQuery(new Term("test2", "field2")),
+ new TermQuery(new Term("test", "field")));
QueryResultKey qrk2 = new QueryResultKey(query , filters2, sort, 1);
-
- assertEquals(qrk1.hashCode(), qrk2.hashCode());
+ assertKeyEquals(qrk1, qrk2);
}
@Test
- public void testQueryResultKeySortedFilters() {
+ public void testFiltersOutOfOrder2() {
Query fq1 = new TermQuery(new Term("test1", "field1"));
Query fq2 = new TermQuery(new Term("test2", "field2"));
Query query = new TermQuery(new Term("test3", "field3"));
- List<Query> filters = new ArrayList<Query>();
- filters.add(fq1);
- filters.add(fq2);
+ List<Query> filters = Arrays.asList(fq1, fq2);
QueryResultKey key = new QueryResultKey(query, filters, null, 0);
- List<Query> newFilters = new ArrayList<Query>();
- newFilters.add(fq2);
- newFilters.add(fq1);
+ List<Query> newFilters = Arrays.asList(fq2, fq1);
QueryResultKey newKey = new QueryResultKey(query, newFilters, null, 0);
- assertEquals(key, newKey);
+ assertKeyEquals(key, newKey);
+ }
+
+ public void testQueryResultKeyUnSortedFiltersWithDups() {
+ Query query = new TermQuery(new Term("main", "val"));
+
+ // we need Query clauses that have identical hashCodes
+ // but are not equal unless the term is equals
+ Query fq_aa = new FlatHashTermQuery("fq_a");
+ Query fq_ab = new FlatHashTermQuery("fq_a");
+ Query fq_ac = new FlatHashTermQuery("fq_a");
+ Query fq_zz = new FlatHashTermQuery("fq_z");
+
+ assertEquals(fq_aa.hashCode(), fq_ab.hashCode());
+ assertEquals(fq_aa.hashCode(), fq_ac.hashCode());
+ assertEquals(fq_aa.hashCode(), fq_zz.hashCode());
+
+ assertEquals(fq_aa, fq_ab);
+ assertEquals(fq_aa, fq_ac);
+ assertEquals(fq_ab, fq_aa);
+ assertEquals(fq_ab, fq_ac);
+ assertEquals(fq_ac, fq_aa);
+ assertEquals(fq_ac, fq_ab);
+
+ assertTrue( ! fq_aa.equals(fq_zz) );
+ assertTrue( ! fq_ab.equals(fq_zz) );
+ assertTrue( ! fq_ac.equals(fq_zz) );
+ assertTrue( ! fq_zz.equals(fq_aa) );
+ assertTrue( ! fq_zz.equals(fq_ab) );
+ assertTrue( ! fq_zz.equals(fq_ac) );
+
+ List<Query> filters1 = Arrays.asList(fq_aa, fq_ab);
+ List<Query> filters2 = Arrays.asList(fq_zz, fq_ac);
+
+ QueryResultKey key1 = new QueryResultKey(query, filters1, null, 0);
+ QueryResultKey key2 = new QueryResultKey(query, filters2, null, 0);
+
+ assertEquals(key1.hashCode(), key2.hashCode());
+
+ assertKeyNotEquals(key1, key2);
+ }
+
+ public void testRandomQueryKeyEquality() {
+
+
+ final int minIters = atLeast(100 * 1000);
+ final Query base = new FlatHashTermQuery("base");
+
+ // ensure we cover both code paths at least once
+ boolean didEquals = false;
+ boolean didNotEquals = false;
+ int iter = 1;
+ while (iter <= minIters || (! didEquals ) || (! didNotEquals ) ) {
+ iter++;
+ int[] numsA = smallArrayOfRandomNumbers();
+ int[] numsB = smallArrayOfRandomNumbers();
+ QueryResultKey aa = new QueryResultKey(base, buildFiltersFromNumbers(numsA), null, 0);
+ QueryResultKey bb = new QueryResultKey(base, buildFiltersFromNumbers(numsB), null, 0);
+ // now that we have our keys, sort the numbers so we know what to expect
+ Arrays.sort(numsA);
+ Arrays.sort(numsB);
+ if (Arrays.equals(numsA, numsB)) {
+ didEquals = true;
+ assertKeyEquals(aa, bb);
+ } else {
+ didNotEquals = true;
+ assertKeyNotEquals(aa, bb);
+ }
+ }
+ assert minIters <= iter;
+ }
+
+ /**
+ * does bi-directional equality check as well as verifying hashCode
+ */
+ public void assertKeyEquals(QueryResultKey key1, QueryResultKey key2) {
+ assertNotNull(key1);
+ assertNotNull(key2);
+ assertEquals(key1.hashCode(), key2.hashCode());
+ assertEquals(key1, key2);
+ assertEquals(key2, key1);
+ }
+
+ /**
+ * does bi-directional check that the keys are <em>not</em> equals
+ */
+ public void assertKeyNotEquals(QueryResultKey key1, QueryResultKey key2) {
+ assertTrue( ! key1.equals(key2) );
+ assertTrue( ! key2.equals(key1) );
+ }
+
+ /**
+ * returns a "small" list of "small" random numbers. The idea behind this method is
+ * that multiple calls have a decent change of returning two arrays which are the
+ * same size and contain the same numbers but in a differnet order.
+ *
+ * the array is garunteed to always have at least 1 element
+ */
+ private int[] smallArrayOfRandomNumbers() {
+ int size = _TestUtil.nextInt(random(), 1, 5);
+ int[] result = new int[size];
+ for (int i=0; i < size; i++) {
+ result[i] = _TestUtil.nextInt(random(), 1, 5);
+ }
+ return result;
}
+ /**
+ * Creates an array of Filter queries using {@link FlatHashTermQuery} based on the
+ * specified ints
+ */
+ private List<Query> buildFiltersFromNumbers(int[] values) {
+ ArrayList<Query> filters = new ArrayList<Query>(values.length);
+ for (int val : values) {
+ filters.add(new FlatHashTermQuery(String.valueOf(val)));
+ }
+ return filters;
+ }
+
+ /**
+ * Quick and dirty subclass of TermQuery that uses fixed field name and a constant
+ * value hashCode, regardless of the Term value.
+ */
+ private static class FlatHashTermQuery extends TermQuery {
+ public FlatHashTermQuery(String val) {
+ super(new Term("some_field", val));
+ }
+
+ @Override
+ public int hashCode() {
+ return 42;
+ }
+ }
}
Modified: lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java Fri Jan 17 17:23:33 2014
@@ -799,7 +799,7 @@ public class TestReplicationHandler exte
master.copyConfigFile(CONF_DIR + slaveSchema, "schema.xml");
}
- int docs = random().nextInt(maxDocs);
+ int docs = random().nextInt(maxDocs) + 1;
for (int i = 0; i < docs; i++) {
index(masterClient, "id", id++, "name", "name = " + i);
}
Modified: lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerTest.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerTest.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerTest.java Fri Jan 17 17:23:33 2014
@@ -274,4 +274,20 @@ public class CoreAdminHandlerTest extend
}
}
+ @Test
+ public void testNonexistentCoreReload() throws Exception {
+ final CoreAdminHandler admin = new CoreAdminHandler(h.getCoreContainer());
+ SolrQueryResponse resp = new SolrQueryResponse();
+
+ try {
+ admin.handleRequestBody(
+ req(CoreAdminParams.ACTION,
+ CoreAdminParams.CoreAdminAction.RELOAD.toString(),
+ CoreAdminParams.CORE, "non-existent-core")
+ , resp);
+ fail("Was able to successfully reload non-existent-core");
+ } catch (Exception e) {
+ assertEquals("Expected error message for non-existent core.", "Core with core name [non-existent-core] does not exist.", e.getMessage());
+ }
+ }
}
Modified: lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/handler/component/DistributedSuggestComponentTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/handler/component/DistributedSuggestComponentTest.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/handler/component/DistributedSuggestComponentTest.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/handler/component/DistributedSuggestComponentTest.java Fri Jan 17 17:23:33 2014
@@ -20,6 +20,7 @@ package org.apache.solr.handler.componen
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.Map;
import junit.framework.Assert;
@@ -27,6 +28,7 @@ import org.apache.lucene.util.LuceneTest
import org.apache.solr.BaseDistributedSearchTestCase;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.util.NamedList;
+import org.apache.solr.common.util.SimpleOrderedMap;
import org.apache.solr.spelling.suggest.SuggesterParams;
import org.junit.BeforeClass;
@@ -67,9 +69,10 @@ public class DistributedSuggestComponent
{
NamedList<Object> nl = control.getResponse();
@SuppressWarnings("unchecked")
- NamedList<Object> sc = (NamedList<Object>) nl.get("suggest");
- if(sc.size()==0) {
- Assert.fail("Control data did not return any suggestions.");
+ Map<String, SimpleOrderedMap<NamedList<Object>>> sc = (Map<String, SimpleOrderedMap<NamedList<Object>>>) nl.get("suggest");
+ String command = (String) nl.get("command");
+ if(sc.size() == 0 && command == null) {
+ Assert.fail("Control data did not return any suggestions or execute any command");
}
}
@@ -100,12 +103,17 @@ public class DistributedSuggestComponent
//Shortcut names
String build = SuggesterParams.SUGGEST_BUILD;
+ String buildAll = SuggesterParams.SUGGEST_BUILD_ALL;
String count = SuggesterParams.SUGGEST_COUNT;
String dictionaryName = SuggesterParams.SUGGEST_DICT;
- //Build the suggest dictionary
- query(buildRequest("", true, requestHandlerName, build, "true", dictionaryName, docDictName));
- query(buildRequest("", true, requestHandlerName, build, "true", dictionaryName, docExprDictName));
+ //Build the suggest dictionary
+ if (random().nextBoolean()) { // build all the suggesters in one go
+ query(buildRequest("", true, requestHandlerName, buildAll, "true"));
+ } else { // build suggesters individually
+ query(buildRequest("", true, requestHandlerName, build, "true", dictionaryName, docDictName));
+ query(buildRequest("", true, requestHandlerName, build, "true", dictionaryName, docExprDictName));
+ }
//Test Basic Functionality
query(buildRequest("exampel", false, requestHandlerName, dictionaryName, docDictName, count, "2"));
@@ -113,6 +121,9 @@ public class DistributedSuggestComponent
query(buildRequest("blah", true, requestHandlerName, dictionaryName, docExprDictName, count, "2"));
query(buildRequest("blah", true, requestHandlerName, dictionaryName, docDictName, count, "2"));
+ //Test multiSuggester
+ query(buildRequest("exampel", false, requestHandlerName, dictionaryName, docDictName, dictionaryName, docExprDictName, count, "2"));
+
}
private Object[] buildRequest(String q, boolean useSuggestQ, String handlerName, String... addlParams) {
List<Object> params = new ArrayList<Object>();
@@ -123,6 +134,7 @@ public class DistributedSuggestComponent
params.add("q");
}
params.add(q);
+
params.add("qt");
params.add(handlerName);
Modified: lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/handler/component/QueryElevationComponentTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/handler/component/QueryElevationComponentTest.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/handler/component/QueryElevationComponentTest.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/handler/component/QueryElevationComponentTest.java Fri Jan 17 17:23:33 2014
@@ -641,6 +641,32 @@ public class QueryElevationComponentTest
);
+ // Test setting ids and excludes from http parameters
+
+ booster.elevationCache.clear();
+ args.put(QueryElevationParams.IDS, "x,y,z");
+ args.put(QueryElevationParams.EXCLUDE, "b");
+
+ assertQ("All five should make it", req
+ , "//*[@numFound='5']"
+ , "//result/doc[1]/str[@name='id'][.='x']"
+ , "//result/doc[2]/str[@name='id'][.='y']"
+ , "//result/doc[3]/str[@name='id'][.='z']"
+ , "//result/doc[4]/str[@name='id'][.='a']"
+ , "//result/doc[5]/str[@name='id'][.='c']"
+ );
+
+ args.put(QueryElevationParams.IDS, "x,z,y");
+ args.put(QueryElevationParams.EXCLUDE, "b,c");
+
+ assertQ("All four should make it", req
+ , "//*[@numFound='4']"
+ , "//result/doc[1]/str[@name='id'][.='x']"
+ , "//result/doc[2]/str[@name='id'][.='z']"
+ , "//result/doc[3]/str[@name='id'][.='y']"
+ , "//result/doc[4]/str[@name='id'][.='a']"
+ );
+
req.close();
} finally {
delete();
Modified: lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/handler/component/SuggestComponentTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/handler/component/SuggestComponentTest.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/handler/component/SuggestComponentTest.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/handler/component/SuggestComponentTest.java Fri Jan 17 17:23:33 2014
@@ -66,11 +66,11 @@ public class SuggestComponentTest extend
SuggesterParams.SUGGEST_BUILD, "true",
SuggesterParams.SUGGEST_Q, "exampel",
SuggesterParams.SUGGEST_COUNT, "2"),
- "//lst[@name='suggest']/lst[@name='exampel']/int[@name='numFound'][.='2']",
- "//lst[@name='suggest']/lst[@name='exampel']/arr[@name='suggestions']/lst[1]/str[@name='term'][.='example inputdata']",
- "//lst[@name='suggest']/lst[@name='exampel']/arr[@name='suggestions']/lst[1]/long[@name='weight'][.='45']",
- "//lst[@name='suggest']/lst[@name='exampel']/arr[@name='suggestions']/lst[2]/str[@name='term'][.='example data']",
- "//lst[@name='suggest']/lst[@name='exampel']/arr[@name='suggestions']/lst[2]/long[@name='weight'][.='40']"
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_doc_dict']/lst[@name='exampel']/int[@name='numFound'][.='2']",
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_doc_dict']/lst[@name='exampel']/arr[@name='suggestions']/lst[1]/str[@name='term'][.='example inputdata']",
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_doc_dict']/lst[@name='exampel']/arr[@name='suggestions']/lst[1]/long[@name='weight'][.='45']",
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_doc_dict']/lst[@name='exampel']/arr[@name='suggestions']/lst[2]/str[@name='term'][.='example data']",
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_doc_dict']/lst[@name='exampel']/arr[@name='suggestions']/lst[2]/long[@name='weight'][.='40']"
);
assertQ(req("qt", rh,
@@ -78,11 +78,11 @@ public class SuggestComponentTest extend
SuggesterParams.SUGGEST_BUILD, "true",
SuggesterParams.SUGGEST_Q, "Rad",
SuggesterParams.SUGGEST_COUNT, "2"),
- "//lst[@name='suggest']/lst[@name='Rad']/int[@name='numFound'][.='2']",
- "//lst[@name='suggest']/lst[@name='Rad']/arr[@name='suggestions']/lst[1]/str[@name='term'][.='Rad fox']",
- "//lst[@name='suggest']/lst[@name='Rad']/arr[@name='suggestions']/lst[1]/long[@name='weight'][.='35']",
- "//lst[@name='suggest']/lst[@name='Rad']/arr[@name='suggestions']/lst[2]/str[@name='term'][.='Red fox']",
- "//lst[@name='suggest']/lst[@name='Rad']/arr[@name='suggestions']/lst[2]/long[@name='weight'][.='30']"
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_doc_dict']/lst[@name='Rad']/int[@name='numFound'][.='2']",
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_doc_dict']/lst[@name='Rad']/arr[@name='suggestions']/lst[1]/str[@name='term'][.='Rad fox']",
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_doc_dict']/lst[@name='Rad']/arr[@name='suggestions']/lst[1]/long[@name='weight'][.='35']",
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_doc_dict']/lst[@name='Rad']/arr[@name='suggestions']/lst[2]/str[@name='term'][.='Red fox']",
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_doc_dict']/lst[@name='Rad']/arr[@name='suggestions']/lst[2]/long[@name='weight'][.='30']"
);
}
@@ -93,11 +93,11 @@ public class SuggestComponentTest extend
SuggesterParams.SUGGEST_BUILD, "true",
SuggesterParams.SUGGEST_Q, "exampel",
SuggesterParams.SUGGEST_COUNT, "2"),
- "//lst[@name='suggest']/lst[@name='exampel']/int[@name='numFound'][.='2']",
- "//lst[@name='suggest']/lst[@name='exampel']/arr[@name='suggestions']/lst[1]/str[@name='term'][.='example inputdata']",
- "//lst[@name='suggest']/lst[@name='exampel']/arr[@name='suggestions']/lst[1]/long[@name='weight'][.='120']",
- "//lst[@name='suggest']/lst[@name='exampel']/arr[@name='suggestions']/lst[2]/str[@name='term'][.='example data']",
- "//lst[@name='suggest']/lst[@name='exampel']/arr[@name='suggestions']/lst[2]/long[@name='weight'][.='110']"
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_doc_expr_dict']/lst[@name='exampel']/int[@name='numFound'][.='2']",
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_doc_expr_dict']/lst[@name='exampel']/arr[@name='suggestions']/lst[1]/str[@name='term'][.='example inputdata']",
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_doc_expr_dict']/lst[@name='exampel']/arr[@name='suggestions']/lst[1]/long[@name='weight'][.='120']",
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_doc_expr_dict']/lst[@name='exampel']/arr[@name='suggestions']/lst[2]/str[@name='term'][.='example data']",
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_doc_expr_dict']/lst[@name='exampel']/arr[@name='suggestions']/lst[2]/long[@name='weight'][.='110']"
);
}
@@ -108,11 +108,62 @@ public class SuggestComponentTest extend
SuggesterParams.SUGGEST_BUILD, "true",
SuggesterParams.SUGGEST_Q, "chn",
SuggesterParams.SUGGEST_COUNT, "2"),
- "//lst[@name='suggest']/lst[@name='chn']/int[@name='numFound'][.='2']",
- "//lst[@name='suggest']/lst[@name='chn']/arr[@name='suggestions']/lst[1]/str[@name='term'][.='chance']",
- "//lst[@name='suggest']/lst[@name='chn']/arr[@name='suggestions']/lst[1]/long[@name='weight'][.='1']",
- "//lst[@name='suggest']/lst[@name='chn']/arr[@name='suggestions']/lst[2]/str[@name='term'][.='change']",
- "//lst[@name='suggest']/lst[@name='chn']/arr[@name='suggestions']/lst[2]/long[@name='weight'][.='1']"
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_file_based']/lst[@name='chn']/int[@name='numFound'][.='2']",
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_file_based']/lst[@name='chn']/arr[@name='suggestions']/lst[1]/str[@name='term'][.='chance']",
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_file_based']/lst[@name='chn']/arr[@name='suggestions']/lst[1]/long[@name='weight'][.='1']",
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_file_based']/lst[@name='chn']/arr[@name='suggestions']/lst[2]/str[@name='term'][.='change']",
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_file_based']/lst[@name='chn']/arr[@name='suggestions']/lst[2]/long[@name='weight'][.='1']"
);
}
+ @Test
+ public void testMultiSuggester() throws Exception {
+ assertQ(req("qt", rh,
+ SuggesterParams.SUGGEST_DICT, "suggest_fuzzy_doc_dict",
+ SuggesterParams.SUGGEST_DICT, "suggest_fuzzy_doc_expr_dict",
+ SuggesterParams.SUGGEST_BUILD, "true",
+ SuggesterParams.SUGGEST_Q, "exampel",
+ SuggesterParams.SUGGEST_COUNT, "2"),
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_doc_dict']/lst[@name='exampel']/int[@name='numFound'][.='2']",
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_doc_dict']/lst[@name='exampel']/arr[@name='suggestions']/lst[1]/str[@name='term'][.='example inputdata']",
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_doc_dict']/lst[@name='exampel']/arr[@name='suggestions']/lst[1]/long[@name='weight'][.='45']",
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_doc_dict']/lst[@name='exampel']/arr[@name='suggestions']/lst[2]/str[@name='term'][.='example data']",
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_doc_dict']/lst[@name='exampel']/arr[@name='suggestions']/lst[2]/long[@name='weight'][.='40']",
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_doc_expr_dict']/lst[@name='exampel']/int[@name='numFound'][.='2']",
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_doc_expr_dict']/lst[@name='exampel']/arr[@name='suggestions']/lst[1]/str[@name='term'][.='example inputdata']",
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_doc_expr_dict']/lst[@name='exampel']/arr[@name='suggestions']/lst[1]/long[@name='weight'][.='120']",
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_doc_expr_dict']/lst[@name='exampel']/arr[@name='suggestions']/lst[2]/str[@name='term'][.='example data']",
+ "//lst[@name='suggest']/lst[@name='suggest_fuzzy_doc_expr_dict']/lst[@name='exampel']/arr[@name='suggestions']/lst[2]/long[@name='weight'][.='110']"
+ );
+ }
+
+ @Test
+ public void testBuildAllSuggester() throws Exception {
+ assertQ(req("qt", rh,
+ SuggesterParams.SUGGEST_BUILD_ALL, "true",
+ SuggesterParams.SUGGEST_Q, "exampel",
+ SuggesterParams.SUGGEST_COUNT, "2"),
+ "//str[@name='command'][.='buildAll']"
+ );
+
+ assertQ(req("qt", rh,
+ SuggesterParams.SUGGEST_BUILD_ALL, "true"),
+ "//str[@name='command'][.='buildAll']"
+ );
+ }
+
+ @Test
+ public void testReloadAllSuggester() throws Exception {
+ assertQ(req("qt", rh,
+ SuggesterParams.SUGGEST_RELOAD_ALL, "true",
+ SuggesterParams.SUGGEST_Q, "exampel",
+ SuggesterParams.SUGGEST_COUNT, "2"),
+ "//str[@name='command'][.='reloadAll']"
+ );
+
+ assertQ(req("qt", rh,
+ SuggesterParams.SUGGEST_RELOAD_ALL, "true"),
+ "//str[@name='command'][.='reloadAll']"
+ );
+ }
+
}
Modified: lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/internal/csv/CSVPrinterTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/internal/csv/CSVPrinterTest.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/internal/csv/CSVPrinterTest.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/internal/csv/CSVPrinterTest.java Fri Jan 17 17:23:33 2014
@@ -156,11 +156,11 @@ public class CSVPrinterTest extends Test
}
public static String printable(String s) {
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
for (int i=0; i<s.length(); i++) {
char ch = s.charAt(i);
if (ch<=' ' || ch>=128) {
- sb.append("(" + (int)ch + ")");
+ sb.append("(").append((int)ch).append(")");
} else {
sb.append(ch);
}
Modified: lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/internal/csv/writer/CSVConfigGuesserTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/internal/csv/writer/CSVConfigGuesserTest.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/internal/csv/writer/CSVConfigGuesserTest.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/internal/csv/writer/CSVConfigGuesserTest.java Fri Jan 17 17:23:33 2014
@@ -54,7 +54,7 @@ public class CSVConfigGuesserTest extend
field.setSize(4);
expected.addField(field);
expected.addField(field);
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
sb.append("1234;abcd;1234\n");
sb.append("abcd;1234;abcd");
ByteArrayInputStream in = new ByteArrayInputStream(sb.toString().getBytes("UTF-8"));
@@ -77,7 +77,7 @@ public class CSVConfigGuesserTest extend
expected.setFill(CSVConfig.FILLRIGHT);
expected.setIgnoreValueDelimiter(false);
// expected.setFixedWidth(false);
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
sb.append("1,2,3,4\n");
sb.append("abcd,1234,abcd,1234");
ByteArrayInputStream in = new ByteArrayInputStream(sb.toString().getBytes("UTF-8"));
Modified: lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/schema/SortableBinaryField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/schema/SortableBinaryField.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/schema/SortableBinaryField.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/schema/SortableBinaryField.java Fri Jan 17 17:23:33 2014
@@ -39,10 +39,7 @@ public class SortableBinaryField extends
@Override
public void checkSchemaField(final SchemaField field) {
- if (field.hasDocValues() && !field.multiValued() && !(field.isRequired() || field.getDefaultValue() != null)) {
- throw new IllegalStateException(
- "Field " + this + " has single-valued doc values enabled, but has no default value and is not required");
- }
+ // NOOP, It's Aaaaaall Good.
}
@Override
Modified: lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/search/TestFiltering.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/search/TestFiltering.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/search/TestFiltering.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/search/TestFiltering.java Fri Jan 17 17:23:33 2014
@@ -20,6 +20,7 @@ package org.apache.solr.search;
import org.apache.lucene.util.OpenBitSet;
import org.apache.solr.SolrTestCaseJ4;
+import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.SolrException;
import org.apache.solr.request.SolrQueryRequest;
import org.junit.BeforeClass;
@@ -259,6 +260,8 @@ public class TestFiltering extends SolrT
}
}
assertU(commit());
+ // sanity check
+ assertJQ(req("q", "*:*"), "/response/numFound==" + model.indexSize);
int totalMatches=0;
int nonZeros=0;
@@ -322,11 +325,10 @@ public class TestFiltering extends SolrT
} catch (Exception e) {
// show the indexIter and queryIter for easier debugging
SolrException.log(log, e);
- String s= "FAILURE: iiter=" + iiter + " qiter=" + qiter + " request="+params;
+ String s= "FAILURE: indexSize=" + model.indexSize + " iiter=" + iiter + " qiter=" + qiter + " request="+params;
log.error(s);
fail(s);
}
-
}
// After making substantial changes to this test, make sure that we still get a
@@ -336,4 +338,43 @@ public class TestFiltering extends SolrT
}
}
+ public void testHossssSanity() throws Exception {
+ clearIndex();
+
+ SolrParams match_0
+ = params("q", "{!frange v=val_i l=0 u=1}",
+ "fq", "{!frange v=val_i l=1 u=1}",
+ "fq", "{!frange v=val_i l=0 u=1}",
+ "fq", "-_query_:\"{!frange v=val_i l=1 u=1}\"",
+ "fq", "-_query_:\"{!frange v=val_i l=0 u=1}\"");
+
+ SolrParams match_1
+ = params("q", "{!frange v=val_i l=0 u=1}",
+ "fq", "{!frange v=val_i l=0 u=1}",
+ "fq", "{!frange v=val_i l=0 u=1}",
+ "fq", "-_query_:\"{!frange v=val_i l=1 u=1}\"",
+ "fq", "-_query_:\"{!frange v=val_i l=1 u=1}\"");
+
+ final int numDocs = 10;
+
+ for (int i = 0; i < numDocs; i++) {
+ String val = Integer.toString(i);
+ assertU(adoc("id",val,f,val));
+ }
+ assertU(commit());
+
+ // sanity check
+ assertJQ(req("q", "*:*"), "/response/numFound==" + numDocs);
+
+ // 1 then 0
+ assertJQ(req(match_1), "/response/numFound==1");
+ assertJQ(req(match_0), "/response/numFound==0");
+
+ // clear caches
+ assertU(commit());
+
+ // 0 then 1
+ assertJQ(req(match_0), "/response/numFound==0");
+ assertJQ(req(match_1), "/response/numFound==1");
+ }
}
Modified: lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/spelling/TestSuggestSpellingConverter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/spelling/TestSuggestSpellingConverter.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/spelling/TestSuggestSpellingConverter.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/spelling/TestSuggestSpellingConverter.java Fri Jan 17 17:23:33 2014
@@ -48,8 +48,8 @@ public class TestSuggestSpellingConverte
// lowercases, removes field names, other syntax, collapses runs of whitespace, etc.
converter.setAnalyzer(new Analyzer() {
@Override
- protected TokenStreamComponents createComponents(String fieldName, Reader reader) {
- Tokenizer tokenizer = new KeywordTokenizer(reader);
+ protected TokenStreamComponents createComponents(String fieldName) {
+ Tokenizer tokenizer = new KeywordTokenizer();
TokenStream filter = new PatternReplaceFilter(tokenizer,
Pattern.compile("([^\\p{L}\\p{M}\\p{N}\\p{Cs}]*[\\p{L}\\p{M}\\p{N}\\p{Cs}\\_]+:)|([^\\p{L}\\p{M}\\p{N}\\p{Cs}])+"), " ", true);
filter = new LowerCaseFilter(TEST_VERSION_CURRENT, filter);
Modified: lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/spelling/suggest/TestFileDictionaryLookup.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/spelling/suggest/TestFileDictionaryLookup.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/spelling/suggest/TestFileDictionaryLookup.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/spelling/suggest/TestFileDictionaryLookup.java Fri Jan 17 17:23:33 2014
@@ -22,39 +22,40 @@ import org.junit.BeforeClass;
public class TestFileDictionaryLookup extends SolrTestCaseJ4 {
static final String REQUEST_URI = "/fuzzy_suggest_analyzing_with_file_dict";
+ static final String DICT_NAME = "fuzzy_suggest_analyzing_with_file_dict";
@BeforeClass
public static void beforeClass() throws Exception {
initCore("solrconfig-phrasesuggest.xml","schema-phrasesuggest.xml");
- assertQ(req("qt", REQUEST_URI, "q", "", SuggesterParams.SUGGEST_BUILD, "true"));
+ assertQ(req("qt", REQUEST_URI, "q", "", SuggesterParams.SUGGEST_DICT, DICT_NAME, SuggesterParams.SUGGEST_BUILD, "true"));
}
public void testDefault() throws Exception {
// tests to demonstrate default maxEdit parameter (value: 1), control for testWithMaxEdit2
- assertQ(req("qt", REQUEST_URI, "q", "chagn", SuggesterParams.SUGGEST_COUNT, "3"),
- "//lst[@name='suggest']/lst[@name='chagn']/int[@name='numFound'][.='2']",
- "//lst[@name='suggest']/lst[@name='chagn']/arr[@name='suggestions']/lst[1]/str[@name='term'][.='chance']",
- "//lst[@name='suggest']/lst[@name='chagn']/arr[@name='suggestions']/lst[2]/str[@name='term'][.='change']"
+ assertQ(req("qt", REQUEST_URI, "q", "chagn", SuggesterParams.SUGGEST_DICT, DICT_NAME, SuggesterParams.SUGGEST_COUNT, "3"),
+ "//lst[@name='suggest']/lst[@name='"+ DICT_NAME +"']/lst[@name='chagn']/int[@name='numFound'][.='2']",
+ "//lst[@name='suggest']/lst[@name='"+ DICT_NAME +"']/lst[@name='chagn']/arr[@name='suggestions']/lst[1]/str[@name='term'][.='chance']",
+ "//lst[@name='suggest']/lst[@name='"+ DICT_NAME +"']/lst[@name='chagn']/arr[@name='suggestions']/lst[2]/str[@name='term'][.='change']"
);
- assertQ(req("qt", REQUEST_URI, "q", "chacn", SuggesterParams.SUGGEST_COUNT, "3"),
- "//lst[@name='suggest']/lst[@name='chacn']/int[@name='numFound'][.='2']",
- "//lst[@name='suggest']/lst[@name='chacn']/arr[@name='suggestions']/lst[1]/str[@name='term'][.='chance']",
- "//lst[@name='suggest']/lst[@name='chacn']/arr[@name='suggestions']/lst[2]/str[@name='term'][.='change']"
+ assertQ(req("qt", REQUEST_URI, "q", "chacn", SuggesterParams.SUGGEST_DICT, DICT_NAME, SuggesterParams.SUGGEST_COUNT, "3"),
+ "//lst[@name='suggest']/lst[@name='"+ DICT_NAME +"']/lst[@name='chacn']/int[@name='numFound'][.='2']",
+ "//lst[@name='suggest']/lst[@name='"+ DICT_NAME +"']/lst[@name='chacn']/arr[@name='suggestions']/lst[1]/str[@name='term'][.='chance']",
+ "//lst[@name='suggest']/lst[@name='"+ DICT_NAME +"']/lst[@name='chacn']/arr[@name='suggestions']/lst[2]/str[@name='term'][.='change']"
);
- assertQ(req("qt", REQUEST_URI, "q", "chagr", SuggesterParams.SUGGEST_COUNT, "3"),
- "//lst[@name='suggest']/lst[@name='chagr']/int[@name='numFound'][.='1']",
- "//lst[@name='suggest']/lst[@name='chagr']/arr[@name='suggestions']/lst[1]/str[@name='term'][.='charge']"
+ assertQ(req("qt", REQUEST_URI, "q", "chagr", SuggesterParams.SUGGEST_DICT, DICT_NAME, SuggesterParams.SUGGEST_COUNT, "3"),
+ "//lst[@name='suggest']/lst[@name='"+ DICT_NAME +"']/lst[@name='chagr']/int[@name='numFound'][.='1']",
+ "//lst[@name='suggest']/lst[@name='"+ DICT_NAME +"']/lst[@name='chagr']/arr[@name='suggestions']/lst[1]/str[@name='term'][.='charge']"
);
- assertQ(req("qt", REQUEST_URI, "q", "chanr", SuggesterParams.SUGGEST_COUNT, "3"),
- "//lst[@name='suggest']/lst[@name='chanr']/int[@name='numFound'][.='3']"
+ assertQ(req("qt", REQUEST_URI, "q", "chanr", SuggesterParams.SUGGEST_DICT, DICT_NAME, SuggesterParams.SUGGEST_COUNT, "3"),
+ "//lst[@name='suggest']/lst[@name='"+ DICT_NAME +"']/lst[@name='chanr']/int[@name='numFound'][.='3']"
);
- assertQ(req("qt", REQUEST_URI, "q", "cyhnce", SuggesterParams.SUGGEST_COUNT, "3"),
- "//lst[@name='suggest']/lst[@name='cyhnce']/int[@name='numFound'][.='0']"
+ assertQ(req("qt", REQUEST_URI, "q", "cyhnce", SuggesterParams.SUGGEST_DICT, DICT_NAME, SuggesterParams.SUGGEST_COUNT, "3"),
+ "//lst[@name='suggest']/lst[@name='"+ DICT_NAME +"']/lst[@name='cyhnce']/int[@name='numFound'][.='0']"
);
}
}
Modified: lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/spelling/suggest/TestHighFrequencyDictionaryFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/spelling/suggest/TestHighFrequencyDictionaryFactory.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/spelling/suggest/TestHighFrequencyDictionaryFactory.java (original)
+++ lucene/dev/branches/lucene5376/solr/core/src/test/org/apache/solr/spelling/suggest/TestHighFrequencyDictionaryFactory.java Fri Jan 17 17:23:33 2014
@@ -23,6 +23,7 @@ import org.junit.BeforeClass;
public class TestHighFrequencyDictionaryFactory extends SolrTestCaseJ4 {
static final String REQUEST_URI = "/fuzzy_suggest_analyzing_with_high_freq_dict";
+ static final String DICT_NAME = "fuzzy_suggest_analyzing_with_high_freq_dict";
@BeforeClass
public static void beforeClass() throws Exception {
@@ -39,36 +40,36 @@ public class TestHighFrequencyDictionary
"stext", "chance"));
assertU(commit());
- assertQ(req("qt", REQUEST_URI, "q", "", SuggesterParams.SUGGEST_BUILD, "true"));
+ assertQ(req("qt", REQUEST_URI, "q", "", SuggesterParams.SUGGEST_DICT, DICT_NAME, SuggesterParams.SUGGEST_BUILD, "true"));
}
public void testDefault() throws Exception {
// tests to demonstrate default maxEdit parameter (value: 1), control for testWithMaxEdit2
- assertQ(req("qt", REQUEST_URI, "q", "chagn", SuggesterParams.SUGGEST_COUNT, "3"),
- "//lst[@name='suggest']/lst[@name='chagn']/int[@name='numFound'][.='2']",
- "//lst[@name='suggest']/lst[@name='chagn']/arr[@name='suggestions']/lst[1]/str[@name='term'][.='chance']",
- "//lst[@name='suggest']/lst[@name='chagn']/arr[@name='suggestions']/lst[2]/str[@name='term'][.='change']"
+ assertQ(req("qt", REQUEST_URI, "q", "chagn", SuggesterParams.SUGGEST_DICT, DICT_NAME, SuggesterParams.SUGGEST_COUNT, "3"),
+ "//lst[@name='suggest']/lst[@name='"+ DICT_NAME +"']/lst[@name='chagn']/int[@name='numFound'][.='2']",
+ "//lst[@name='suggest']/lst[@name='"+ DICT_NAME +"']/lst[@name='chagn']/arr[@name='suggestions']/lst[1]/str[@name='term'][.='chance']",
+ "//lst[@name='suggest']/lst[@name='"+ DICT_NAME +"']/lst[@name='chagn']/arr[@name='suggestions']/lst[2]/str[@name='term'][.='change']"
);
- assertQ(req("qt", REQUEST_URI, "q", "chacn", SuggesterParams.SUGGEST_COUNT, "3"),
- "//lst[@name='suggest']/lst[@name='chacn']/int[@name='numFound'][.='2']",
- "//lst[@name='suggest']/lst[@name='chacn']/arr[@name='suggestions']/lst[1]/str[@name='term'][.='chance']",
- "//lst[@name='suggest']/lst[@name='chacn']/arr[@name='suggestions']/lst[2]/str[@name='term'][.='change']"
+ assertQ(req("qt", REQUEST_URI, "q", "chacn", SuggesterParams.SUGGEST_DICT, DICT_NAME, SuggesterParams.SUGGEST_COUNT, "3"),
+ "//lst[@name='suggest']/lst[@name='"+ DICT_NAME +"']/lst[@name='chacn']/int[@name='numFound'][.='2']",
+ "//lst[@name='suggest']/lst[@name='"+ DICT_NAME +"']/lst[@name='chacn']/arr[@name='suggestions']/lst[1]/str[@name='term'][.='chance']",
+ "//lst[@name='suggest']/lst[@name='"+ DICT_NAME +"']/lst[@name='chacn']/arr[@name='suggestions']/lst[2]/str[@name='term'][.='change']"
);
- assertQ(req("qt", REQUEST_URI, "q", "chagr", SuggesterParams.SUGGEST_COUNT, "3"),
- "//lst[@name='suggest']/lst[@name='chagr']/int[@name='numFound'][.='1']",
- "//lst[@name='suggest']/lst[@name='chagr']/arr[@name='suggestions']/lst[1]/str[@name='term'][.='charge']"
+ assertQ(req("qt", REQUEST_URI, "q", "chagr", SuggesterParams.SUGGEST_DICT, DICT_NAME, SuggesterParams.SUGGEST_COUNT, "3"),
+ "//lst[@name='suggest']/lst[@name='"+ DICT_NAME +"']/lst[@name='chagr']/int[@name='numFound'][.='1']",
+ "//lst[@name='suggest']/lst[@name='"+ DICT_NAME +"']/lst[@name='chagr']/arr[@name='suggestions']/lst[1]/str[@name='term'][.='charge']"
);
- assertQ(req("qt", REQUEST_URI, "q", "chanr", SuggesterParams.SUGGEST_COUNT, "3"),
- "//lst[@name='suggest']/lst[@name='chanr']/int[@name='numFound'][.='3']"
+ assertQ(req("qt", REQUEST_URI, "q", "chanr", SuggesterParams.SUGGEST_DICT, DICT_NAME, SuggesterParams.SUGGEST_COUNT, "3"),
+ "//lst[@name='suggest']/lst[@name='"+ DICT_NAME +"']/lst[@name='chanr']/int[@name='numFound'][.='3']"
);
- assertQ(req("qt", REQUEST_URI, "q", "cyhnce", SuggesterParams.SUGGEST_COUNT, "3"),
- "//lst[@name='suggest']/lst[@name='cyhnce']/int[@name='numFound'][.='0']"
+ assertQ(req("qt", REQUEST_URI, "q", "cyhnce", SuggesterParams.SUGGEST_DICT, DICT_NAME, SuggesterParams.SUGGEST_COUNT, "3"),
+ "//lst[@name='suggest']/lst[@name='"+ DICT_NAME +"']/lst[@name='cyhnce']/int[@name='numFound'][.='0']"
);
}
}