You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2011/07/07 16:18:33 UTC
svn commit: r1143840 [21/22] - in /lucene/dev/branches/flexscoring: ./
dev-tools/eclipse/ dev-tools/idea/.idea/ dev-tools/idea/lucene/contrib/
dev-tools/idea/lucene/contrib/demo/
dev-tools/idea/lucene/contrib/highlighter/ dev-tools/idea/lucene/contrib/...
Modified: lucene/dev/branches/flexscoring/solr/src/site/src/documentation/content/xdocs/index.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/site/src/documentation/content/xdocs/index.xml?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/site/src/documentation/content/xdocs/index.xml (original)
+++ lucene/dev/branches/flexscoring/solr/src/site/src/documentation/content/xdocs/index.xml Thu Jul 7 14:18:02 2011
@@ -66,6 +66,29 @@ customization is required.
</section>
<section id="news">
<title>News</title>
+<section>
+ <title>May 2011 - Solr 3.2 Released</title>
+ <p>The Lucene PMC is pleased to announce the release of <a href="http://www.apache.org/dyn/closer.cgi/lucene/solr">Apache Solr 3.2</a>!
+ </p>
+ <p>
+ Solr's version number was synced with Lucene following the Lucene/Solr merge, so Solr 3.2 contains Lucene 3.2.
+ Solr 3.2 is the first release after Solr 3.1.
+ </p>
+ <p>
+ Solr 3.2 release highlights include
+ </p>
+ <ul>
+ <li>Ability to specify overwrite and commitWithin as request parameters when using the JSON update format</li>
+ <li>TermQParserPlugin, useful when generating filter queries from terms returned from field faceting or the terms component.</li>
+ <li>DebugComponent now supports using a NamedList to model Explanation objects in it's responses instead of Explanation.toString</li>
+ <li>Improvements to the UIMA and Carrot2 integrations</li>
+ <li>Bugfixes and improvements from Apache Lucene 3.2</li>
+ </ul>
+
+ <p>See the <a href="http://svn.apache.org/repos/asf/lucene/dev/tags/lucene_solr_3_2/solr/CHANGES.txt">release notes</a> for a more complete list of all the new features, improvements, and bugfixes.
+ </p>
+
+</section>
<section>
<title>March 2011 - Solr 3.1 Released</title>
<p>The Lucene PMC is pleased to announce the release of <a href="http://www.apache.org/dyn/closer.cgi/lucene/solr">Apache Solr 3.1</a>!
Modified: lucene/dev/branches/flexscoring/solr/src/solrj/org/apache/solr/client/solrj/impl/StreamingUpdateSolrServer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/solrj/org/apache/solr/client/solrj/impl/StreamingUpdateSolrServer.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/solrj/org/apache/solr/client/solrj/impl/StreamingUpdateSolrServer.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/solrj/org/apache/solr/client/solrj/impl/StreamingUpdateSolrServer.java Thu Jul 7 14:18:02 2011
@@ -129,8 +129,7 @@ public class StreamingUpdateSolrServer e
if( fmt != null ) {
log.info( fmt );
writer.write( String.format( fmt,
- params.getBool( UpdateParams.WAIT_SEARCHER, false )+"",
- params.getBool( UpdateParams.WAIT_FLUSH, false )+"") );
+ params.getBool( UpdateParams.WAIT_SEARCHER, false )+"") );
}
}
Modified: lucene/dev/branches/flexscoring/solr/src/solrj/org/apache/solr/client/solrj/request/AbstractUpdateRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/solrj/org/apache/solr/client/solrj/request/AbstractUpdateRequest.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/solrj/org/apache/solr/client/solrj/request/AbstractUpdateRequest.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/solrj/org/apache/solr/client/solrj/request/AbstractUpdateRequest.java Thu Jul 7 14:18:02 2011
@@ -59,7 +59,6 @@ public abstract class AbstractUpdateRequ
else if( action == ACTION.COMMIT ) {
params.set( UpdateParams.COMMIT, "true" );
}
- params.set( UpdateParams.WAIT_FLUSH, String.valueOf(waitFlush));
params.set( UpdateParams.WAIT_SEARCHER, String.valueOf(waitSearcher));
return this;
}
@@ -107,10 +106,6 @@ public abstract class AbstractUpdateRequ
return res;
}
- public boolean isWaitFlush() {
- return params != null && params.getBool(UpdateParams.WAIT_FLUSH, false);
- }
-
public boolean isWaitSearcher() {
return params != null && params.getBool(UpdateParams.WAIT_SEARCHER, false);
}
@@ -122,10 +117,6 @@ public abstract class AbstractUpdateRequ
return null;
}
- public void setWaitFlush(boolean waitFlush) {
- setParam( UpdateParams.WAIT_FLUSH, waitFlush+"" );
- }
-
public void setWaitSearcher(boolean waitSearcher) {
setParam( UpdateParams.WAIT_SEARCHER, waitSearcher+"" );
}
Modified: lucene/dev/branches/flexscoring/solr/src/solrj/org/apache/solr/client/solrj/request/CoreAdminRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/solrj/org/apache/solr/client/solrj/request/CoreAdminRequest.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/solrj/org/apache/solr/client/solrj/request/CoreAdminRequest.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/solrj/org/apache/solr/client/solrj/request/CoreAdminRequest.java Thu Jul 7 14:18:02 2011
@@ -119,6 +119,7 @@ public class CoreAdminRequest extends So
public static class MergeIndexes extends CoreAdminRequest {
protected List<String> indexDirs;
+ protected List<String> srcCores;
public MergeIndexes() {
action = CoreAdminAction.MERGEINDEXES;
@@ -132,6 +133,14 @@ public class CoreAdminRequest extends So
return indexDirs;
}
+ public List<String> getSrcCores() {
+ return srcCores;
+ }
+
+ public void setSrcCores(List<String> srcCores) {
+ this.srcCores = srcCores;
+ }
+
@Override
public SolrParams getParams() {
if (action == null) {
@@ -145,6 +154,35 @@ public class CoreAdminRequest extends So
params.set(CoreAdminParams.INDEX_DIR, indexDir);
}
}
+ if (srcCores != null) {
+ for (String srcCore : srcCores) {
+ params.set(CoreAdminParams.SRC_CORE, srcCore);
+ }
+ }
+ return params;
+ }
+ }
+
+ public static class Unload extends CoreAdminRequest {
+ protected boolean deleteIndex;
+
+ public Unload(boolean deleteIndex) {
+ action = CoreAdminAction.UNLOAD;
+ this.deleteIndex = deleteIndex;
+ }
+
+ public boolean isDeleteIndex() {
+ return deleteIndex;
+ }
+
+ public void setDeleteIndex(boolean deleteIndex) {
+ this.deleteIndex = deleteIndex;
+ }
+
+ @Override
+ public SolrParams getParams() {
+ ModifiableSolrParams params = (ModifiableSolrParams) super.getParams();
+ params.set(CoreAdminParams.DELETE_INDEX, deleteIndex);
return params;
}
}
@@ -230,11 +268,15 @@ public class CoreAdminRequest extends So
public static CoreAdminResponse unloadCore( String name, SolrServer server ) throws SolrServerException, IOException
{
- CoreAdminRequest req = new CoreAdminRequest();
+ return unloadCore(name, false, server);
+ }
+
+ public static CoreAdminResponse unloadCore( String name, boolean deleteIndex, SolrServer server ) throws SolrServerException, IOException
+ {
+ Unload req = new Unload(deleteIndex);
req.setCoreName( name );
- req.setAction( CoreAdminAction.UNLOAD );
return req.process( server );
- }
+ }
public static CoreAdminResponse renameCore(String coreName, String newName, SolrServer server ) throws SolrServerException, IOException
{
@@ -289,11 +331,12 @@ public class CoreAdminRequest extends So
}
public static CoreAdminResponse mergeIndexes(String name,
- String[] indexDirs, SolrServer server) throws SolrServerException,
+ String[] indexDirs, String[] srcCores, SolrServer server) throws SolrServerException,
IOException {
CoreAdminRequest.MergeIndexes req = new CoreAdminRequest.MergeIndexes();
req.setCoreName(name);
req.setIndexDirs(Arrays.asList(indexDirs));
+ req.setSrcCores(Arrays.asList(srcCores));
return req.process(server);
}
}
Modified: lucene/dev/branches/flexscoring/solr/src/solrj/org/apache/solr/client/solrj/request/UpdateRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/solrj/org/apache/solr/client/solrj/request/UpdateRequest.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/solrj/org/apache/solr/client/solrj/request/UpdateRequest.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/solrj/org/apache/solr/client/solrj/request/UpdateRequest.java Thu Jul 7 14:18:02 2011
@@ -155,7 +155,6 @@ public class UpdateRequest extends Abstr
else if( action == ACTION.COMMIT ) {
params.set( UpdateParams.COMMIT, "true" );
}
- params.set( UpdateParams.WAIT_FLUSH, waitFlush+"" );
params.set( UpdateParams.WAIT_SEARCHER, waitSearcher+"" );
return this;
}
Modified: lucene/dev/branches/flexscoring/solr/src/test-files/solr/conf/schema-trie.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test-files/solr/conf/schema-trie.xml?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test-files/solr/conf/schema-trie.xml (original)
+++ lucene/dev/branches/flexscoring/solr/src/test-files/solr/conf/schema-trie.xml Thu Jul 7 14:18:02 2011
@@ -233,7 +233,7 @@
See the Java Regular Expression documentation for more
infomation on pattern and replacement string syntax.
- http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/package-summary.html
+ http://java.sun.com/j2se/1.6.0/docs/api/java/util/regex/package-summary.html
-->
<filter class="solr.PatternReplaceFilterFactory"
pattern="([^a-z])" replacement="" replace="all"
Modified: lucene/dev/branches/flexscoring/solr/src/test-files/solr/conf/schema11.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test-files/solr/conf/schema11.xml?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test-files/solr/conf/schema11.xml (original)
+++ lucene/dev/branches/flexscoring/solr/src/test-files/solr/conf/schema11.xml Thu Jul 7 14:18:02 2011
@@ -224,7 +224,7 @@
See the Java Regular Expression documentation for more
infomation on pattern and replacement string syntax.
- http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/package-summary.html
+ http://java.sun.com/j2se/1.6.0/docs/api/java/util/regex/package-summary.html
-->
<filter class="solr.PatternReplaceFilterFactory"
pattern="([^a-z])" replacement="" replace="all"
Modified: lucene/dev/branches/flexscoring/solr/src/test-framework/org/apache/solr/SolrTestCaseJ4.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test-framework/org/apache/solr/SolrTestCaseJ4.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test-framework/org/apache/solr/SolrTestCaseJ4.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test-framework/org/apache/solr/SolrTestCaseJ4.java Thu Jul 7 14:18:02 2011
@@ -41,6 +41,7 @@ import org.apache.solr.schema.IndexSchem
import org.apache.solr.schema.SchemaField;
import org.apache.solr.search.SolrIndexSearcher;
import org.apache.solr.servlet.DirectSolrConnection;
+import org.apache.solr.update.SolrIndexWriter;
import org.apache.solr.util.TestHarness;
import org.junit.AfterClass;
import org.junit.BeforeClass;
@@ -64,6 +65,7 @@ public abstract class SolrTestCaseJ4 ext
@BeforeClass
public static void beforeClassSolrTestCase() throws Exception {
startTrackingSearchers();
+ startTrackingWriters();
ignoreException("ignore_exception");
}
@@ -72,6 +74,7 @@ public abstract class SolrTestCaseJ4 ext
deleteCore();
resetExceptionIgnores();
endTrackingSearchers();
+ endTrackingWriters();
}
// SOLR-2279: hack to shut these directories down
@@ -131,6 +134,24 @@ public abstract class SolrTestCaseJ4 ext
fail(msg);
}
}
+
+ static long numWriterOpens;
+ static long numWriterCloses;
+ public static void startTrackingWriters() {
+ numOpens = SolrIndexWriter.numOpens.get();
+ numCloses = SolrIndexWriter.numCloses.get();
+ }
+
+ public static void endTrackingWriters() {
+ long endNumOpens = SolrIndexWriter.numOpens.get();
+ long endNumCloses = SolrIndexWriter.numCloses.get();
+
+ if (endNumOpens-numOpens != endNumCloses-numCloses) {
+ String msg = "ERROR: SolrIndexWriter opens=" + (endNumOpens-numWriterOpens) + " closes=" + (endNumCloses-numWriterCloses);
+ log.error(msg);
+ fail(msg);
+ }
+ }
/** Causes an exception matching the regex pattern to not be logged. */
public static void ignoreException(String pattern) {
@@ -430,6 +451,7 @@ public abstract class SolrTestCaseJ4 ext
}
for (String test : tests) {
+ if (test == null || test.length()==0) continue;
String testJSON = test.replace('\'', '"');
try {
Modified: lucene/dev/branches/flexscoring/solr/src/test-framework/org/apache/solr/util/AbstractSolrTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test-framework/org/apache/solr/util/AbstractSolrTestCase.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test-framework/org/apache/solr/util/AbstractSolrTestCase.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test-framework/org/apache/solr/util/AbstractSolrTestCase.java Thu Jul 7 14:18:02 2011
@@ -97,11 +97,13 @@ public abstract class AbstractSolrTestCa
@BeforeClass
public static void beforeClassAbstractSolrTestCase() throws Exception {
SolrTestCaseJ4.startTrackingSearchers();
+ SolrTestCaseJ4.startTrackingWriters();
}
@AfterClass
public static void afterClassAbstractSolrTestCase() throws Exception {
SolrTestCaseJ4.endTrackingSearchers();
+ SolrTestCaseJ4.endTrackingWriters();
}
/**
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/BasicFunctionalityTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/BasicFunctionalityTest.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/BasicFunctionalityTest.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/BasicFunctionalityTest.java Thu Jul 7 14:18:02 2011
@@ -28,9 +28,9 @@ import javax.xml.parsers.DocumentBuilder
import org.apache.lucene.document.Field;
import org.apache.lucene.document.Fieldable;
+import org.apache.lucene.index.IndexWriter;
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;
@@ -49,7 +49,7 @@ import org.apache.solr.schema.IndexSchem
import org.apache.solr.schema.SchemaField;
import org.apache.solr.search.DocIterator;
import org.apache.solr.search.DocList;
-import org.apache.solr.update.SolrIndexWriter;
+import org.apache.solr.update.DirectUpdateHandler2;
import org.junit.BeforeClass;
@@ -120,9 +120,8 @@ public class BasicFunctionalityTest exte
// test merge factor picked up
SolrCore core = h.getCore();
- SolrIndexWriter writer = new SolrIndexWriter("testWriter",core.getNewIndexDir(), core.getDirectoryFactory(), false, core.getSchema(), core.getSolrConfig().mainIndexConfig, core.getDeletionPolicy(), core.getCodecProvider());
- assertEquals("Mergefactor was not picked up", ((LogMergePolicy) writer.getConfig().getMergePolicy()).getMergeFactor(), 8);
- writer.close();
+ IndexWriter writer = ((DirectUpdateHandler2)core.getUpdateHandler()).getIndexWriterProvider().getIndexWriter();
+ assertEquals("Mergefactor was not picked up", ((LogMergePolicy)writer.getConfig().getMergePolicy()).getMergeFactor(), 8);
lrf.args.put(CommonParams.VERSION,"2.2");
assertQ("test query on empty index",
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/TestGroupingSearch.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/TestGroupingSearch.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/TestGroupingSearch.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/TestGroupingSearch.java Thu Jul 7 14:18:02 2011
@@ -20,6 +20,7 @@ package org.apache.solr;
import org.apache.lucene.search.FieldCache;
import org.apache.noggit.JSONUtil;
import org.apache.noggit.ObjectBuilder;
+import org.apache.solr.common.params.GroupParams;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.schema.IndexSchema;
import org.junit.Before;
@@ -89,6 +90,49 @@ public class TestGroupingSearch extends
}
@Test
+ public void testGroupingGroupSortingScore_withTotalGroupCount() {
+ assertU(add(doc("id", "1","name", "author1", "title", "a book title", "group_si", "1")));
+ assertU(add(doc("id", "2","name", "author1", "title", "the title", "group_si", "2")));
+ assertU(add(doc("id", "3","name", "author2", "title", "a book title", "group_si", "1")));
+ assertU(add(doc("id", "4","name", "author2", "title", "title", "group_si", "2")));
+ assertU(add(doc("id", "5","name", "author3", "title", "the title of a title", "group_si", "1")));
+ assertU(commit());
+
+ assertQ(req("q","title:title", "group", "true", "group.field","name", "group.ngroups", "true")
+ ,"//lst[@name='grouped']/lst[@name='name']"
+ ,"//lst[@name='grouped']/lst[@name='name']/int[@name='matches'][.='5']"
+ ,"//lst[@name='grouped']/lst[@name='name']/int[@name='ngroups'][.='3']"
+ ,"*[count(//arr[@name='groups']/lst) = 3]"
+
+ ,"//arr[@name='groups']/lst[1]/str[@name='groupValue'][.='author2']"
+ ,"//arr[@name='groups']/lst[1]/result[@numFound='2']"
+ ,"//arr[@name='groups']/lst[1]/result/doc/*[@name='id'][.='4']"
+
+ ,"//arr[@name='groups']/lst[2]/str[@name='groupValue'][.='author1']"
+ ,"//arr[@name='groups']/lst[2]/result[@numFound='2']"
+ ,"//arr[@name='groups']/lst[2]/result/doc/*[@name='id'][.='2']"
+
+ ,"//arr[@name='groups']/lst[3]/str[@name='groupValue'][.='author3']"
+ ,"//arr[@name='groups']/lst[3]/result[@numFound='1']"
+ ,"//arr[@name='groups']/lst[3]/result/doc/*[@name='id'][.='5']"
+ );
+
+ assertQ(req("q","title:title", "group", "true", "group.field","group_si", "group.ngroups", "true")
+ ,"//lst[@name='grouped']/lst[@name='group_si']/int[@name='matches'][.='5']"
+ ,"//lst[@name='grouped']/lst[@name='group_si']/int[@name='ngroups'][.='2']"
+ ,"*[count(//arr[@name='groups']/lst) = 2]"
+
+ ,"//arr[@name='groups']/lst[1]/int[@name='groupValue'][.='2']"
+ ,"//arr[@name='groups']/lst[1]/result[@numFound='2']"
+ ,"//arr[@name='groups']/lst[1]/result/doc/*[@name='id'][.='4']"
+
+ ,"//arr[@name='groups']/lst[2]/int[@name='groupValue'][.='1']"
+ ,"//arr[@name='groups']/lst[2]/result[@numFound='3']"
+ ,"//arr[@name='groups']/lst[2]/result/doc/*[@name='id'][.='5']"
+ );
+ }
+
+ @Test
public void testGroupingGroupSortingScore_basicWithGroupSortEqualToSort() {
assertU(add(doc("id", "1","name", "author1", "title", "a book title")));
assertU(add(doc("id", "2","name", "author1", "title", "the title")));
@@ -353,7 +397,7 @@ public class TestGroupingSearch extends
, "/grouped/foo_i=={'matches':10,'doclist':"
+"{'numFound':10,'start':1,'docs':[{'id':'10'},{'id':'3'},{'id':'6'}]}}"
);
- };
+ }
@@ -476,14 +520,16 @@ public class TestGroupingSearch extends
List<Grp> sortedGroups = new ArrayList(groups.values());
Collections.sort(sortedGroups, groupComparator==sortComparator ? createFirstDocComparator(sortComparator) : createMaxDocComparator(sortComparator));
- Object modelResponse = buildGroupedResult(h.getCore().getSchema(), sortedGroups, start, rows, group_offset, group_limit);
+ boolean includeNGroups = random.nextBoolean();
+ Object modelResponse = buildGroupedResult(h.getCore().getSchema(), sortedGroups, start, rows, group_offset, group_limit, includeNGroups);
+ int randomPercentage = random.nextInt(101);
// TODO: create a random filter too
-
SolrQueryRequest req = req("group","true","wt","json","indent","true", "echoParams","all", "q","{!func}score_f", "group.field",groupField
,sortStr==null ? "nosort":"sort", sortStr ==null ? "": sortStr
- ,(groupSortStr==null || groupSortStr==sortStr) ? "nosort":"group.sort", groupSortStr==null ? "": groupSortStr
- ,"rows",""+rows, "start",""+start, "group.offset",""+group_offset, "group.limit",""+group_limit
+ ,(groupSortStr==null || groupSortStr==sortStr) ? "noGroupsort":"group.sort", groupSortStr==null ? "": groupSortStr
+ ,"rows",""+rows, "start",""+start, "group.offset",""+group_offset, "group.limit",""+group_limit,
+ GroupParams.GROUP_CACHE_PERCENTAGE, Integer.toString(randomPercentage), GroupParams.GROUP_TOTAL_COUNT, includeNGroups ? "true" : "false"
);
String strResponse = h.query(req);
@@ -508,7 +554,7 @@ public class TestGroupingSearch extends
}
- public static Object buildGroupedResult(IndexSchema schema, List<Grp> sortedGroups, int start, int rows, int group_offset, int group_limit) {
+ public static Object buildGroupedResult(IndexSchema schema, List<Grp> sortedGroups, int start, int rows, int group_offset, int group_limit, boolean includeNGroups) {
Map<String,Object> result = new LinkedHashMap<String,Object>();
long matches = 0;
@@ -516,6 +562,9 @@ public class TestGroupingSearch extends
matches += grp.docs.size();
}
result.put("matches", matches);
+ if (includeNGroups) {
+ result.put("ngroups", sortedGroups.size());
+ }
List groupList = new ArrayList();
result.put("groups", groupList);
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java Thu Jul 7 14:18:02 2011
@@ -17,6 +17,7 @@
package org.apache.solr.client.solrj;
+import org.apache.solr.client.solrj.request.AbstractUpdateRequest;
import org.apache.solr.client.solrj.request.CoreAdminRequest;
import org.apache.solr.client.solrj.request.QueryRequest;
import org.apache.solr.client.solrj.request.UpdateRequest;
@@ -26,6 +27,8 @@ import org.apache.solr.core.CoreContaine
import org.apache.solr.core.SolrCore;
import org.apache.solr.util.ExternalPaths;
+import java.io.IOException;
+
/**
* Abstract base class for testing merge indexes command
*
@@ -79,9 +82,9 @@ public abstract class MergeIndexesExampl
protected abstract String getIndexDirCore1();
- public void testMergeIndexes() throws Exception {
+ private UpdateRequest setupCores() throws SolrServerException, IOException {
UpdateRequest up = new UpdateRequest();
- up.setAction(ACTION.COMMIT, true, true);
+ up.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true);
up.deleteByQuery("*:*");
up.process(getSolrCore0());
up.process(getSolrCore1());
@@ -119,11 +122,28 @@ public abstract class MergeIndexesExampl
assertEquals(1,
getSolrCore1().query(new SolrQuery("id:BBB")).getResults().size());
+ return up;
+ }
+
+ public void testMergeIndexesByDirName() throws Exception {
+ UpdateRequest up = setupCores();
+
// Now get the index directory of core1 and merge with core0
- String indexDir = getIndexDirCore1();
- String name = "core0";
- SolrServer coreadmin = getSolrAdmin();
- CoreAdminRequest.mergeIndexes(name, new String[] { indexDir }, coreadmin);
+ CoreAdminRequest.mergeIndexes("core0", new String[] {getIndexDirCore1()}, new String[0], getSolrAdmin());
+
+ // Now commit the merged index
+ up.clear(); // just do commit
+ up.process(getSolrCore0());
+
+ assertEquals(1,
+ getSolrCore0().query(new SolrQuery("id:AAA")).getResults().size());
+ assertEquals(1,
+ getSolrCore0().query(new SolrQuery("id:BBB")).getResults().size());
+ }
+
+ public void testMergeIndexesByCoreName() throws Exception {
+ UpdateRequest up = setupCores();
+ CoreAdminRequest.mergeIndexes("core0", new String[0], new String[] {"core1"}, getSolrAdmin());
// Now commit the merged index
up.clear(); // just do commit
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/client/solrj/MultiCoreExampleTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/client/solrj/MultiCoreExampleTestBase.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/client/solrj/MultiCoreExampleTestBase.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/client/solrj/MultiCoreExampleTestBase.java Thu Jul 7 14:18:02 2011
@@ -23,11 +23,15 @@ import org.apache.solr.client.solrj.requ
import org.apache.solr.client.solrj.request.UpdateRequest.ACTION;
import org.apache.solr.client.solrj.response.CoreAdminResponse;
import org.apache.solr.common.SolrInputDocument;
+import org.apache.solr.common.util.NamedList;
import org.apache.solr.core.CoreContainer;
import org.apache.solr.core.SolrCore;
+import org.apache.solr.request.SolrRequestInfo;
import org.apache.solr.util.ExternalPaths;
import org.junit.Test;
+import java.io.File;
+
/**
*
@@ -161,5 +165,13 @@ public abstract class MultiCoreExampleTe
}
catch( Exception ex ) {}
assertEquals( 1, getSolrCore("corefoo").query( new SolrQuery( "id:BBB" ) ).getResults().size() );
+
+ NamedList<Object> response = getSolrCore("corefoo").query(new SolrQuery().setQueryType("/admin/system")).getResponse();
+ NamedList<Object> coreInfo = (NamedList<Object>) response.get("core");
+ String indexDir = (String) ((NamedList<Object>) coreInfo.get("directory")).get("index");
+ // test delete index on core
+ CoreAdminRequest.unloadCore("corefoo", true, coreadmin);
+ File dir = new File(indexDir);
+ assertFalse("Index directory exists after core unload with deleteIndex=true", dir.exists());
}
}
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/client/solrj/SolrExampleTests.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/client/solrj/SolrExampleTests.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/client/solrj/SolrExampleTests.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/client/solrj/SolrExampleTests.java Thu Jul 7 14:18:02 2011
@@ -658,15 +658,6 @@ abstract public class SolrExampleTests e
// should be ok
server.ping();
- try {
- SolrPing ping = new SolrPing();
- ping.getParams().set( "qt", "unknown handler! ignore_exception" );
- ping.process( server );
- fail( "sent unknown query type!" );
- }
- catch( Exception ex ) {
- // expected
- }
}
@Test
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/client/solrj/embedded/TestSolrProperties.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/client/solrj/embedded/TestSolrProperties.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/client/solrj/embedded/TestSolrProperties.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/client/solrj/embedded/TestSolrProperties.java Thu Jul 7 14:18:02 2011
@@ -27,6 +27,7 @@ import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
+import org.apache.commons.io.IOUtils;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.client.solrj.SolrQuery;
@@ -202,7 +203,7 @@ public class TestSolrProperties extends
mcr = CoreAdminRequest.persist("solr-persist.xml", coreadmin);
- //System.out.println(IOUtils.toString(new FileInputStream(new File(solrXml.getParent(), "solr-persist.xml"))));
+ System.out.println(IOUtils.toString(new FileInputStream(new File(solrXml.getParent(), "solr-persist.xml"))));
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
FileInputStream fis = new FileInputStream(new File(solrXml.getParent(), "solr-persist.xml"));
try {
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/cloud/BasicZkTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/cloud/BasicZkTest.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/cloud/BasicZkTest.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/cloud/BasicZkTest.java Thu Jul 7 14:18:02 2011
@@ -17,11 +17,11 @@ package org.apache.solr.cloud;
* limitations under the License.
*/
+import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.LogMergePolicy;
import org.apache.solr.common.params.CommonParams;
import org.apache.solr.core.SolrCore;
-import org.apache.solr.update.SolrIndexWriter;
-
+import org.apache.solr.update.DirectUpdateHandler2;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -45,11 +45,10 @@ public class BasicZkTest extends Abstrac
// test merge factor picked up
SolrCore core = h.getCore();
- SolrIndexWriter writer = new SolrIndexWriter("testWriter", core
- .getNewIndexDir(), core.getDirectoryFactory(), false, core.getSchema(),
- core.getSolrConfig().mainIndexConfig, core.getDeletionPolicy(), core.getCodecProvider());
+
+ IndexWriter writer = ((DirectUpdateHandler2)core.getUpdateHandler()).getIndexWriterProvider().getIndexWriter();
+
assertEquals("Mergefactor was not picked up", ((LogMergePolicy)writer.getConfig().getMergePolicy()).getMergeFactor(), 8);
- writer.close();
lrf.args.put(CommonParams.VERSION, "2.2");
assertQ("test query on empty index", req("qlkciyopsbgzyvkylsjhchghjrdf"),
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/cloud/CloudStateUpdateTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/cloud/CloudStateUpdateTest.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/cloud/CloudStateUpdateTest.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/cloud/CloudStateUpdateTest.java Thu Jul 7 14:18:02 2011
@@ -40,7 +40,7 @@ import org.slf4j.LoggerFactory;
/**
* TODO: look at hostPort used below
*/
-public class CloudStateUpdateTest extends SolrTestCaseJ4 {
+public class CloudStateUpdateTest extends SolrTestCaseJ4 {
protected static Logger log = LoggerFactory
.getLogger(AbstractZkTestCase.class);
@@ -68,15 +68,14 @@ public class CloudStateUpdateTest extend
@BeforeClass
public static void beforeClass() throws Exception {
- initCore();
}
@Override
public void setUp() throws Exception {
super.setUp();
-
+ createTempDir();
System.setProperty("zkClientTimeout", "3000");
-
+
zkDir = dataDir.getAbsolutePath() + File.separator
+ "zookeeper/server1/data";
zkServer = new ZkTestServer(zkDir);
@@ -95,7 +94,7 @@ public class CloudStateUpdateTest extend
dataDir3 = new File(dataDir + File.separator + "data3");
dataDir3.mkdirs();
- dataDir4 = new File(dataDir + File.separator + "data3");
+ dataDir4 = new File(dataDir + File.separator + "data4");
dataDir4.mkdirs();
// set some system properties for use by tests
@@ -103,31 +102,21 @@ public class CloudStateUpdateTest extend
System.setProperty("solr.test.sys.prop2", "proptwo");
System.setProperty("hostPort", "1661");
- CoreContainer.Initializer init1 = new CoreContainer.Initializer() {
- {
- this.dataDir = CloudStateUpdateTest.this.dataDir1.getAbsolutePath();
- }
- };
-
+ CoreContainer.Initializer init1 = new CoreContainer.Initializer();
+ System.setProperty("solr.data.dir", CloudStateUpdateTest.this.dataDir1.getAbsolutePath());
container1 = init1.initialize();
System.clearProperty("hostPort");
System.setProperty("hostPort", "1662");
- init2 = new CoreContainer.Initializer() {
- {
- this.dataDir = CloudStateUpdateTest.this.dataDir2.getAbsolutePath();
- }
- };
-
+ init2 = new CoreContainer.Initializer();
+ System.setProperty("solr.data.dir", CloudStateUpdateTest.this.dataDir2.getAbsolutePath());
container2 = init2.initialize();
System.clearProperty("hostPort");
System.setProperty("hostPort", "1663");
- CoreContainer.Initializer init3 = new CoreContainer.Initializer() {
- {
- this.dataDir = CloudStateUpdateTest.this.dataDir3.getAbsolutePath();
- }
- };
+ CoreContainer.Initializer init3 = new CoreContainer.Initializer();
+
+ System.setProperty("solr.data.dir", CloudStateUpdateTest.this.dataDir3.getAbsolutePath());
container3 = init3.initialize();
System.clearProperty("hostPort");
@@ -153,6 +142,7 @@ public class CloudStateUpdateTest extend
dcore.setDataDir(dataDir4.getAbsolutePath());
SolrCore core = container1.create(dcore);
+
container1.register(core, false);
ZkController zkController2 = container2.getZkController();
@@ -226,7 +216,8 @@ public class CloudStateUpdateTest extend
assertTrue(container1.getZkController().getCloudState().liveNodesContain(
container2.getZkController().getNodeName()));
-
+
+ // core.close(); // this core is managed by container1 now
}
@Override
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/DummyValueSourceParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/DummyValueSourceParser.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/DummyValueSourceParser.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/DummyValueSourceParser.java Thu Jul 7 14:18:02 2011
@@ -16,13 +16,13 @@ package org.apache.solr.core;
* limitations under the License.
*/
+import org.apache.lucene.queries.function.DocValues;
+import org.apache.lucene.queries.function.ValueSource;
+import org.apache.lucene.queries.function.valuesource.SimpleFloatFunction;
import org.apache.lucene.queryParser.ParseException;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.search.FunctionQParser;
import org.apache.solr.search.ValueSourceParser;
-import org.apache.solr.search.function.DocValues;
-import org.apache.solr.search.function.SimpleFloatFunction;
-import org.apache.solr.search.function.ValueSource;
/**
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/MockEventListener.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/MockEventListener.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/MockEventListener.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/MockEventListener.java Thu Jul 7 14:18:02 2011
@@ -40,6 +40,11 @@ public class MockEventListener implement
public void postCommit() {
/* NOOP */
}
+
+ @Override
+ public void postSoftCommit() {
+ /* NOOP */
+ }
public void newSearcher(SolrIndexSearcher newSearcher,
SolrIndexSearcher currentSearcher) {
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/SolrCoreTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/SolrCoreTest.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/SolrCoreTest.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/SolrCoreTest.java Thu Jul 7 14:18:02 2011
@@ -207,9 +207,13 @@ class ClosingRequestHandler extends Empt
public void inform(SolrCore core) {
core.addCloseHook( new CloseHook() {
- public void close(SolrCore core) {
+ @Override
+ public void preClose(SolrCore core) {
closed = true;
}
+
+ @Override
+ public void postClose(SolrCore core) {}
});
}
}
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/TestConfig.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/TestConfig.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/TestConfig.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/TestConfig.java Thu Jul 7 14:18:02 2011
@@ -116,22 +116,9 @@ public class TestConfig extends SolrTest
@Test
public void testTermIndexInterval() throws Exception {
- class ExposeWriterHandler extends DirectUpdateHandler2 {
- public ExposeWriterHandler() throws IOException {
- super(h.getCore());
- }
-
- public IndexWriter getWriter() throws IOException {
- forceOpenWriter();
- return writer;
- }
- }
-
- ExposeWriterHandler duh = new ExposeWriterHandler();
- IndexWriter writer = duh.getWriter();
+ IndexWriter writer = ((DirectUpdateHandler2)h.getCore().getUpdateHandler()).getIndexWriterProvider().getIndexWriter();
int interval = writer.getConfig().getTermIndexInterval();
assertEquals(256, interval);
- duh.close();
}
@Test
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/TestLegacyMergeSchedulerPolicyConfig.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/TestLegacyMergeSchedulerPolicyConfig.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/TestLegacyMergeSchedulerPolicyConfig.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/TestLegacyMergeSchedulerPolicyConfig.java Thu Jul 7 14:18:02 2011
@@ -17,8 +17,6 @@ package org.apache.solr.core;
* limitations under the License.
*/
-import java.io.IOException;
-
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.LogDocMergePolicy;
import org.apache.lucene.index.SerialMergeScheduler;
@@ -35,21 +33,9 @@ public class TestLegacyMergeSchedulerPol
@Test
public void testLegacy() throws Exception {
- ExposeWriterHandler duh = new ExposeWriterHandler();
- IndexWriter writer = duh.getWriter();
+ IndexWriter writer = ((DirectUpdateHandler2)h.getCore().getUpdateHandler()).getIndexWriterProvider().getIndexWriter();
assertTrue(writer.getConfig().getMergePolicy().getClass().getName().equals(LogDocMergePolicy.class.getName()));
assertTrue(writer.getConfig().getMergeScheduler().getClass().getName().equals(SerialMergeScheduler.class.getName()));
- duh.close();
}
-
- class ExposeWriterHandler extends DirectUpdateHandler2 {
- public ExposeWriterHandler() throws IOException {
- super(h.getCore());
- }
- public IndexWriter getWriter() throws IOException {
- forceOpenWriter();
- return writer;
- }
- }
}
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/TestPropInject.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/TestPropInject.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/TestPropInject.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/TestPropInject.java Thu Jul 7 14:18:02 2011
@@ -35,31 +35,16 @@ public class TestPropInject extends Abst
public String getSolrConfigFile() {
return "solrconfig-propinject.xml";
}
-
- class ExposeWriterHandler extends DirectUpdateHandler2 {
- public ExposeWriterHandler() throws IOException {
- super(h.getCore());
- }
-
- public IndexWriter getWriter() throws IOException {
- forceOpenWriter();
- return writer;
- }
- }
public void testMergePolicy() throws Exception {
- ExposeWriterHandler uh = new ExposeWriterHandler();
- IndexWriter writer = uh.getWriter();
+ IndexWriter writer = ((DirectUpdateHandler2)h.getCore().getUpdateHandler()).getIndexWriterProvider().getIndexWriter();
LogByteSizeMergePolicy mp = (LogByteSizeMergePolicy)writer.getConfig().getMergePolicy();
assertEquals(64.0, mp.getMaxMergeMB(), 0);
- uh.close();
}
public void testProps() throws Exception {
- ExposeWriterHandler uh = new ExposeWriterHandler();
- IndexWriter writer = uh.getWriter();
+ IndexWriter writer = ((DirectUpdateHandler2)h.getCore().getUpdateHandler()).getIndexWriterProvider().getIndexWriter();
ConcurrentMergeScheduler cms = (ConcurrentMergeScheduler)writer.getConfig().getMergeScheduler();
assertEquals(2, cms.getMaxThreadCount());
- uh.close();
}
}
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/TestPropInjectDefaults.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/TestPropInjectDefaults.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/TestPropInjectDefaults.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/core/TestPropInjectDefaults.java Thu Jul 7 14:18:02 2011
@@ -17,8 +17,6 @@ package org.apache.solr.core;
* limitations under the License.
*/
-import java.io.IOException;
-
import org.apache.lucene.index.ConcurrentMergeScheduler;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.LogByteSizeMergePolicy;
@@ -32,34 +30,19 @@ public class TestPropInjectDefaults exte
public static void beforeClass() throws Exception {
initCore("solrconfig-propinject-indexdefault.xml", "schema.xml");
}
-
- class ExposeWriterHandler extends DirectUpdateHandler2 {
- public ExposeWriterHandler() throws IOException {
- super(h.getCore());
- }
-
- public IndexWriter getWriter() throws IOException {
- forceOpenWriter();
- return writer;
- }
- }
@Test
public void testMergePolicyDefaults() throws Exception {
- ExposeWriterHandler uh = new ExposeWriterHandler();
- IndexWriter writer = uh.getWriter();
+ IndexWriter writer = ((DirectUpdateHandler2)h.getCore().getUpdateHandler()).getIndexWriterProvider().getIndexWriter();
LogByteSizeMergePolicy mp = (LogByteSizeMergePolicy)writer.getConfig().getMergePolicy();
assertEquals(32.0, mp.getMaxMergeMB(), 0);
- uh.close();
}
@Test
public void testPropsDefaults() throws Exception {
- ExposeWriterHandler uh = new ExposeWriterHandler();
- IndexWriter writer = uh.getWriter();
+ IndexWriter writer = ((DirectUpdateHandler2)h.getCore().getUpdateHandler()).getIndexWriterProvider().getIndexWriter();
ConcurrentMergeScheduler cms = (ConcurrentMergeScheduler)writer.getConfig().getMergeScheduler();
assertEquals(4, cms.getMaxThreadCount());
- uh.close();
}
}
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/handler/JsonLoaderTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/handler/JsonLoaderTest.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/handler/JsonLoaderTest.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/handler/JsonLoaderTest.java Thu Jul 7 14:18:02 2011
@@ -22,7 +22,6 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.noggit.JSONParser;
-import org.apache.lucene.util.LuceneTestCase;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.SolrInputField;
@@ -70,7 +69,7 @@ public class JsonLoaderTest extends Solr
"},\n" +
"\n" +
"'commit': {},\n" +
- "'optimize': { 'waitFlush':false, 'waitSearcher':false },\n" +
+ "'optimize': { 'waitSearcher':false },\n" +
"\n" +
"'delete': { 'id':'ID' },\n" +
"'delete': { 'query':'QUERY' },\n" +
@@ -109,12 +108,10 @@ public class JsonLoaderTest extends Solr
assertEquals( 2, p.commitCommands.size() );
CommitUpdateCommand commit = p.commitCommands.get( 0 );
assertFalse( commit.optimize );
- assertTrue( commit.waitFlush );
assertTrue( commit.waitSearcher );
commit = p.commitCommands.get( 1 );
assertTrue( commit.optimize );
- assertFalse( commit.waitFlush );
assertFalse( commit.waitSearcher );
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/handler/component/TermVectorComponentTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/handler/component/TermVectorComponentTest.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/handler/component/TermVectorComponentTest.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/handler/component/TermVectorComponentTest.java Thu Jul 7 14:18:02 2011
@@ -135,7 +135,39 @@ public class TermVectorComponentTest ext
assertJQ(req("json.nl","map", "qt",tv, "q", "id:0", TermVectorComponent.COMPONENT_NAME, "true"
, TermVectorParams.TF, "true", TermVectorParams.DF, "true", TermVectorParams.OFFSETS, "true", TermVectorParams.POSITIONS, "true", TermVectorParams.TF_IDF, "true")
,"/termVectors/doc-0/test_posofftv/anoth=={'tf':1, 'offsets':{'start':20, 'end':27}, 'positions':{'position':1}, 'df':2, 'tf-idf':0.5}"
- );
+ );
+
+ assertJQ(req("json.nl","map", "qt",tv, "q", "id:0", TermVectorComponent.COMPONENT_NAME, "true"
+ , TermVectorParams.ALL, "true")
+ ,"/termVectors/doc-0/test_posofftv/anoth=={'tf':1, 'offsets':{'start':20, 'end':27}, 'positions':{'position':1}, 'df':2, 'tf-idf':0.5}"
+ );
+
+ // test each combination at random
+ final List<String> list = new ArrayList<String>();
+ list.addAll(Arrays.asList("json.nl","map", "qt",tv, "q", "id:0", TermVectorComponent.COMPONENT_NAME, "true"));
+ String[][] options = new String[][] { { TermVectorParams.TF, "'tf':1" },
+ { TermVectorParams.OFFSETS, "'offsets':{'start':20, 'end':27}" },
+ { TermVectorParams.POSITIONS, "'positions':{'position':1}" },
+ { TermVectorParams.DF, "'df':2" },
+ { TermVectorParams.TF_IDF, "'tf-idf':0.5" } };
+ StringBuilder expected = new StringBuilder("/termVectors/doc-0/test_posofftv/anoth=={");
+ boolean first = true;
+ for (int i = 0; i < options.length; i++) {
+ final boolean use = random.nextBoolean();
+ if (use) {
+ if (!first) {
+ expected.append(", ");
+ }
+ first = false;
+ expected.append(options[i][1]);
+
+ }
+ list.add(options[i][0]);
+ list.add(use ? "true" : "false");
+ }
+
+ expected.append("}");
+ assertJQ(req(list.toArray(new String[0])), expected.toString());
}
@Test
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/request/TestFaceting.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/request/TestFaceting.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/request/TestFaceting.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/request/TestFaceting.java Thu Jul 7 14:18:02 2011
@@ -87,7 +87,7 @@ public class TestFaceting extends SolrTe
if (te == null) {
br = null;
} else {
- TermsEnum.SeekStatus status = te.seek(new BytesRef(s));
+ TermsEnum.SeekStatus status = te.seekCeil(new BytesRef(s));
if (status == TermsEnum.SeekStatus.END) {
br = null;
} else {
@@ -103,7 +103,7 @@ public class TestFaceting extends SolrTe
// test seeking before term
if (size>0) {
- assertEquals(size>0, te.seek(new BytesRef("000"), true) != TermsEnum.SeekStatus.END);
+ assertEquals(size>0, te.seekCeil(new BytesRef("000"), true) != TermsEnum.SeekStatus.END);
assertEquals(0, te.ord());
assertEquals(t(0), te.term().utf8ToString());
}
@@ -113,7 +113,7 @@ public class TestFaceting extends SolrTe
for (int i=0; i<size*2+10; i++) {
int rnum = r.nextInt(size);
String s = t(rnum);
- assertTrue(te.seek((long) rnum) != TermsEnum.SeekStatus.END);
+ te.seekExact((long) rnum);
BytesRef br = te.term();
assertNotNull(br);
assertEquals(rnum, (int) te.ord());
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/schema/PolyFieldTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/schema/PolyFieldTest.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/schema/PolyFieldTest.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/schema/PolyFieldTest.java Thu Jul 7 14:18:02 2011
@@ -17,13 +17,13 @@ package org.apache.solr.schema;
*/
import org.apache.lucene.document.Fieldable;
+import org.apache.lucene.queries.function.ValueSource;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.Query;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.core.SolrCore;
import org.apache.solr.common.SolrException;
-import org.apache.solr.search.function.ValueSource;
import org.junit.BeforeClass;
import org.junit.Test;
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/QueryParsingTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/QueryParsingTest.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/QueryParsingTest.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/QueryParsingTest.java Thu Jul 7 14:18:02 2011
@@ -46,57 +46,57 @@ public class QueryParsingTest extends So
sort = QueryParsing.parseSort("score asc", req);
SortField[] flds = sort.getSort();
- assertEquals(flds[0].getType(), SortField.SCORE);
+ assertEquals(flds[0].getType(), SortField.Type.SCORE);
assertTrue(flds[0].getReverse());
sort = QueryParsing.parseSort("weight desc", req);
flds = sort.getSort();
- assertEquals(flds[0].getType(), SortField.FLOAT);
+ assertEquals(flds[0].getType(), SortField.Type.FLOAT);
assertEquals(flds[0].getField(), "weight");
assertEquals(flds[0].getReverse(), true);
sort = QueryParsing.parseSort("weight desc,bday asc", req);
flds = sort.getSort();
- assertEquals(flds[0].getType(), SortField.FLOAT);
+ assertEquals(flds[0].getType(), SortField.Type.FLOAT);
assertEquals(flds[0].getField(), "weight");
assertEquals(flds[0].getReverse(), true);
- assertEquals(flds[1].getType(), SortField.LONG);
+ assertEquals(flds[1].getType(), SortField.Type.LONG);
assertEquals(flds[1].getField(), "bday");
assertEquals(flds[1].getReverse(), false);
//order aliases
sort = QueryParsing.parseSort("weight top,bday asc", req);
flds = sort.getSort();
- assertEquals(flds[0].getType(), SortField.FLOAT);
+ assertEquals(flds[0].getType(), SortField.Type.FLOAT);
assertEquals(flds[0].getField(), "weight");
assertEquals(flds[0].getReverse(), true);
- assertEquals(flds[1].getType(), SortField.LONG);
+ assertEquals(flds[1].getType(), SortField.Type.LONG);
assertEquals(flds[1].getField(), "bday");
assertEquals(flds[1].getReverse(), false);
sort = QueryParsing.parseSort("weight top,bday bottom", req);
flds = sort.getSort();
- assertEquals(flds[0].getType(), SortField.FLOAT);
+ assertEquals(flds[0].getType(), SortField.Type.FLOAT);
assertEquals(flds[0].getField(), "weight");
assertEquals(flds[0].getReverse(), true);
- assertEquals(flds[1].getType(), SortField.LONG);
+ assertEquals(flds[1].getType(), SortField.Type.LONG);
assertEquals(flds[1].getField(), "bday");
assertEquals(flds[1].getReverse(), false);
//test weird spacing
sort = QueryParsing.parseSort("weight desc, bday asc", req);
flds = sort.getSort();
- assertEquals(flds[0].getType(), SortField.FLOAT);
+ assertEquals(flds[0].getType(), SortField.Type.FLOAT);
assertEquals(flds[0].getField(), "weight");
assertEquals(flds[1].getField(), "bday");
- assertEquals(flds[1].getType(), SortField.LONG);
+ assertEquals(flds[1].getType(), SortField.Type.LONG);
//handles trailing commas
sort = QueryParsing.parseSort("weight desc,", req);
flds = sort.getSort();
- assertEquals(flds[0].getType(), SortField.FLOAT);
+ assertEquals(flds[0].getType(), SortField.Type.FLOAT);
assertEquals(flds[0].getField(), "weight");
//test functions
sort = QueryParsing.parseSort("pow(weight, 2) desc", req);
flds = sort.getSort();
- assertEquals(flds[0].getType(), SortField.CUSTOM);
+ assertEquals(flds[0].getType(), SortField.Type.REWRITEABLE);
//Not thrilled about the fragility of string matching here, but...
//the value sources get wrapped, so the out field is different than the input
assertEquals(flds[0].getField(), "pow(float(weight),const(2))");
@@ -104,12 +104,12 @@ public class QueryParsingTest extends So
//test functions (more deep)
sort = QueryParsing.parseSort("sum(product(r_f1,sum(d_f1,t_f1,1.0)),a_f1) asc", req);
flds = sort.getSort();
- assertEquals(flds[0].getType(), SortField.CUSTOM);
+ assertEquals(flds[0].getType(), SortField.Type.REWRITEABLE);
assertEquals(flds[0].getField(), "sum(product(float(r_f1),sum(float(d_f1),float(t_f1),const(1.0))),float(a_f1))");
sort = QueryParsing.parseSort("pow(weight, 2.0) desc", req);
flds = sort.getSort();
- assertEquals(flds[0].getType(), SortField.CUSTOM);
+ assertEquals(flds[0].getType(), SortField.Type.REWRITEABLE);
//Not thrilled about the fragility of string matching here, but...
//the value sources get wrapped, so the out field is different than the input
assertEquals(flds[0].getField(), "pow(float(weight),const(2.0))");
@@ -117,27 +117,27 @@ public class QueryParsingTest extends So
sort = QueryParsing.parseSort("pow(weight, 2.0) desc, weight desc, bday asc", req);
flds = sort.getSort();
- assertEquals(flds[0].getType(), SortField.CUSTOM);
+ assertEquals(flds[0].getType(), SortField.Type.REWRITEABLE);
//Not thrilled about the fragility of string matching here, but...
//the value sources get wrapped, so the out field is different than the input
assertEquals(flds[0].getField(), "pow(float(weight),const(2.0))");
- assertEquals(flds[1].getType(), SortField.FLOAT);
+ assertEquals(flds[1].getType(), SortField.Type.FLOAT);
assertEquals(flds[1].getField(), "weight");
assertEquals(flds[2].getField(), "bday");
- assertEquals(flds[2].getType(), SortField.LONG);
+ assertEquals(flds[2].getType(), SortField.Type.LONG);
//handles trailing commas
sort = QueryParsing.parseSort("weight desc,", req);
flds = sort.getSort();
- assertEquals(flds[0].getType(), SortField.FLOAT);
+ assertEquals(flds[0].getType(), SortField.Type.FLOAT);
assertEquals(flds[0].getField(), "weight");
//Test literals in functions
sort = QueryParsing.parseSort("strdist(foo_s1, \"junk\", jw) desc", req);
flds = sort.getSort();
- assertEquals(flds[0].getType(), SortField.CUSTOM);
+ assertEquals(flds[0].getType(), SortField.Type.REWRITEABLE);
//the value sources get wrapped, so the out field is different than the input
assertEquals(flds[0].getField(), "strdist(str(foo_s1),literal(junk), dist=org.apache.lucene.search.spell.JaroWinklerDistance)");
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/TestIndexSearcher.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/TestIndexSearcher.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/TestIndexSearcher.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/TestIndexSearcher.java Thu Jul 7 14:18:02 2011
@@ -18,12 +18,12 @@ package org.apache.solr.search;
import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.index.IndexReader.ReaderContext;
+import org.apache.lucene.queries.function.DocValues;
+import org.apache.lucene.queries.function.ValueSource;
import org.apache.lucene.util.ReaderUtil;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.schema.SchemaField;
-import org.apache.solr.search.function.ValueSource;
-import org.apache.solr.search.function.DocValues;
import org.junit.BeforeClass;
import java.util.Map;
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/TestQueryTypes.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/TestQueryTypes.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/TestQueryTypes.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/TestQueryTypes.java Thu Jul 7 14:18:02 2011
@@ -120,6 +120,16 @@ public class TestQueryTypes extends Abst
,"//result[@numFound='1']"
);
+ // frange as filter not cached
+ assertQ(req( "q","*:*", "fq", "{!frange cache=false v="+f+" l='"+v+"' u='"+v+"'}" )
+ ,"//result[@numFound='1']"
+ );
+
+ // frange as filter run after the main query
+ assertQ(req( "q","*:*", "fq", "{!frange cache=false cost=100 v="+f+" l='"+v+"' u='"+v+"'}" )
+ ,"//result[@numFound='1']"
+ );
+
// exists()
assertQ(req( "fq","id:999", "q", "{!frange l=1 u=1}if(exists("+f+"),1,0)" )
,"//result[@numFound='1']"
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/TestSearchPerf.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/TestSearchPerf.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/TestSearchPerf.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/TestSearchPerf.java Thu Jul 7 14:18:02 2011
@@ -202,10 +202,10 @@ public class TestSearchPerf extends Abst
SolrQueryRequest req = lrf.makeRequest();
QParser parser = QParser.getParser("foomany_s:[" + l + " TO " + u + "]", null, req);
- Query range = parser.parse();
+ Query range = parser.getQuery();
QParser parser2 = QParser.getParser("{!frange l="+l+" u="+u+"}foomany_s", null, req);
- Query frange = parser2.parse();
+ Query frange = parser2.getQuery();
req.close();
createIndex2(indexSize,"foomany_s");
@@ -228,13 +228,13 @@ public class TestSearchPerf extends Abst
SolrQueryRequest req = lrf.makeRequest();
QParser parser = QParser.getParser("foomany_s:[" + l + " TO " + u + "]", null, req);
- Query rangeQ = parser.parse();
+ Query rangeQ = parser.getQuery();
List<Query> filters = new ArrayList<Query>();
filters.add(rangeQ);
req.close();
parser = QParser.getParser("{!dismax qf=t10_100_ws pf=t10_100_ws ps=20}"+ t(0) + ' ' + t(1) + ' ' + t(2), null, req);
- Query q= parser.parse();
+ Query q= parser.getQuery();
// SolrIndexSearcher searcher = req.getSearcher();
// DocSet range = searcher.getDocSet(rangeQ, null);
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/TestSort.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/TestSort.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/TestSort.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/TestSort.java Thu Jul 7 14:18:02 2011
@@ -126,13 +126,13 @@ public class TestSort extends AbstractSo
final boolean sortMissingFirst2 = !luceneSort2 && !sortMissingLast2;
final boolean reverse2 = r.nextBoolean();
- if (r.nextBoolean()) sfields.add( new SortField(null, SortField.SCORE));
+ if (r.nextBoolean()) sfields.add( new SortField(null, SortField.Type.SCORE));
// hit both use-cases of sort-missing-last
sfields.add( Sorting.getStringSortField("f", reverse, sortMissingLast, sortMissingFirst) );
if (secondary) {
sfields.add( Sorting.getStringSortField("f2", reverse2, sortMissingLast2, sortMissingFirst2) );
}
- if (r.nextBoolean()) sfields.add( new SortField(null, SortField.SCORE));
+ if (r.nextBoolean()) sfields.add( new SortField(null, SortField.Type.SCORE));
Sort sort = new Sort(sfields.toArray(new SortField[sfields.size()]));
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/function/NvlValueSourceParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/function/NvlValueSourceParser.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/function/NvlValueSourceParser.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/function/NvlValueSourceParser.java Thu Jul 7 14:18:02 2011
@@ -17,6 +17,9 @@
package org.apache.solr.search.function;
+import org.apache.lucene.queries.function.DocValues;
+import org.apache.lucene.queries.function.ValueSource;
+import org.apache.lucene.queries.function.valuesource.SimpleFloatFunction;
import org.apache.lucene.queryParser.ParseException;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.search.FunctionQParser;
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/function/TestFunctionQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/function/TestFunctionQuery.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/function/TestFunctionQuery.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/search/function/TestFunctionQuery.java Thu Jul 7 14:18:02 2011
@@ -18,6 +18,7 @@
package org.apache.solr.search.function;
import org.apache.lucene.index.FieldInvertState;
+import org.apache.lucene.index.codecs.CodecProvider;
import org.apache.lucene.search.DefaultSimilarity;
import org.apache.lucene.search.FieldCache;
import org.apache.lucene.search.TFIDFSimilarity;
@@ -65,11 +66,25 @@ public class TestFunctionQuery extends S
// lrf.args.put("version","2.0");
for (float val : values) {
String s = Float.toString(val);
+
if (field!=null) assertU(adoc("id", s, field, s));
else assertU(adoc("id", s));
+
+ if (random.nextInt(100) < 20) {
+ if (field!=null) assertU(adoc("id", s, field, s));
+ else assertU(adoc("id", s));
+ }
+
+ if (random.nextInt(100) < 20) {
+ assertU(commit());
+
+ }
+
+
// System.out.println("added doc for " + val);
}
- assertU(optimize()); // squeeze out any possible deleted docs
+ // assertU(optimize()); // squeeze out any possible deleted docs
+ assertU(commit());
}
// replace \0 with the field name and create a parseable string
@@ -289,7 +304,17 @@ public class TestFunctionQuery extends S
assertQ(req("fl","*,score","q", "{!func}docfreq('a_t','cow')", "fq","id:6"), "//float[@name='score']='3.0'");
assertQ(req("fl","*,score","q", "{!func}docfreq($field,$value)", "fq","id:6", "field","a_t", "value","cow"), "//float[@name='score']='3.0'");
assertQ(req("fl","*,score","q", "{!func}termfreq(a_t,cow)", "fq","id:6"), "//float[@name='score']='5.0'");
+
TFIDFSimilarity similarity = new DefaultSimilarity();
+
+ // make sure it doesn't get a NPE if no terms are present in a field.
+ assertQ(req("fl","*,score","q", "{!func}termfreq(nofield_t,cow)", "fq","id:6"), "//float[@name='score']='0.0'");
+ assertQ(req("fl","*,score","q", "{!func}docfreq(nofield_t,cow)", "fq","id:6"), "//float[@name='score']='0.0'");
+ assertQ(req("fl","*,score","q", "{!func}idf(nofield_t,cow)", "fq","id:6"),
+ "//float[@name='score']='" + similarity.idf(0,6) + "'");
+ assertQ(req("fl","*,score","q", "{!func}tf(nofield_t,cow)", "fq","id:6"),
+ "//float[@name='score']='" + similarity.tf(0) + "'");
+
assertQ(req("fl","*,score","q", "{!func}idf(a_t,cow)", "fq","id:6"),
"//float[@name='score']='" + similarity.idf(3,6) + "'");
assertQ(req("fl","*,score","q", "{!func}tf(a_t,cow)", "fq","id:6"),
@@ -371,6 +396,30 @@ public class TestFunctionQuery extends S
purgeFieldCache(FieldCache.DEFAULT); // avoid FC insanity
}
+ /**
+ * test collection-level term stats (new in 4.x indexes)
+ */
+ public void testTotalTermFreq() throws Exception {
+ assumeFalse("PreFlex codec does not support collection-level term stats",
+ "PreFlex".equals(CodecProvider.getDefault().getDefaultFieldCodec()));
+
+ clearIndex();
+
+ assertU(adoc("id","1", "a_tdt","2009-08-31T12:10:10.123Z", "b_tdt","2009-08-31T12:10:10.124Z"));
+ assertU(adoc("id","2", "a_t","how now brown cow"));
+ assertU(commit()); // create more than one segment
+ assertU(adoc("id","3", "a_t","brown cow"));
+ assertU(adoc("id","4"));
+ assertU(commit()); // create more than one segment
+ assertU(adoc("id","5"));
+ assertU(adoc("id","6", "a_t","cow cow cow cow cow"));
+ assertU(commit());
+ assertQ(req("fl","*,score","q", "{!func}totaltermfreq('a_t','cow')", "fq","id:6"), "//float[@name='score']='7.0'");
+ assertQ(req("fl","*,score","q", "{!func}ttf(a_t,'cow')", "fq","id:6"), "//float[@name='score']='7.0'");
+ assertQ(req("fl","*,score","q", "{!func}sumtotaltermfreq('a_t')", "fq","id:6"), "//float[@name='score']='11.0'");
+ assertQ(req("fl","*,score","q", "{!func}sttf(a_t)", "fq","id:6"), "//float[@name='score']='11.0'");
+ }
+
@Test
public void testSortByFunc() throws Exception {
assertU(adoc("id", "1", "const_s", "xx", "x_i", "100", "1_s", "a"));
Modified: lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/update/AutoCommitTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/update/AutoCommitTest.java?rev=1143840&r1=1143839&r2=1143840&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/update/AutoCommitTest.java (original)
+++ lucene/dev/branches/flexscoring/solr/src/test/org/apache/solr/update/AutoCommitTest.java Thu Jul 7 14:18:02 2011
@@ -25,52 +25,47 @@ import org.apache.solr.common.params.Map
import org.apache.solr.common.util.ContentStream;
import org.apache.solr.common.util.ContentStreamBase;
import org.apache.solr.common.util.NamedList;
-import org.apache.solr.core.*;
-import org.apache.solr.search.*;
+import org.apache.solr.core.SolrCore;
+import org.apache.solr.core.SolrEventListener;
import org.apache.solr.handler.XmlUpdateRequestHandler;
import org.apache.solr.request.SolrQueryRequestBase;
import org.apache.solr.response.SolrQueryResponse;
+import org.apache.solr.search.SolrIndexSearcher;
import org.apache.solr.util.AbstractSolrTestCase;
-import org.apache.solr.util.RefCounted;
-
-class CommitListener implements SolrEventListener {
- public volatile boolean triggered = false;
- public volatile SolrIndexSearcher currentSearcher;
- public SolrCore core;
-
- public CommitListener(SolrCore core) {
- this.core = core;
- }
+class NewSearcherListener implements SolrEventListener {
+ private volatile boolean triggered = false;
+
+ @Override
public void init(NamedList args) {}
-
- public void newSearcher(SolrIndexSearcher newSearcher, SolrIndexSearcher currentSearcher) {
- this.currentSearcher = currentSearcher;
- triggered = true;
- }
- public void postCommit() {
+
+ @Override
+ public void newSearcher(SolrIndexSearcher newSearcher,
+ SolrIndexSearcher currentSearcher) {
triggered = true;
}
+
+ @Override
+ public void postCommit() {}
+
+ @Override
+ public void postSoftCommit() {}
+
public void reset() {
- triggered=false;
+ triggered = false;
}
-
- public boolean waitForCommit(int timeout) {
- //triggered = false;
-
- for (int towait=timeout; towait > 0; towait -= 250) {
+
+ boolean waitForNewSearcher(int timeout) {
+ long timeoutTime = System.currentTimeMillis() + timeout;
+ while (System.currentTimeMillis() < timeoutTime) {
+ if (triggered) {
+ return true;
+ }
+
try {
- if (triggered) {
- RefCounted<SolrIndexSearcher> holder = core.getSearcher();
- SolrIndexSearcher s = holder.get();
- holder.decref();
- // since there could be two commits in a row, don't test for a specific new searcher
- // just test that the old one has been replaced.
- if (s != currentSearcher) return true;
- // it may be that a commit just happened, but the new searcher hasn't been registered yet.
- }
- Thread.sleep( 250 );
+ Thread.sleep(250);
} catch (InterruptedException e) {}
+
}
return false;
}
@@ -97,61 +92,60 @@ public class AutoCommitTest extends Abst
return streams;
}
- /* This test is causing too many failures on one of the build slaves.
- Temporarily disabled. -Mike Klaas */
- public void XXXtestMaxDocs() throws Exception {
+ public void testMaxDocs() throws Exception {
SolrCore core = h.getCore();
- CommitListener trigger = new CommitListener(core);
+ NewSearcherListener trigger = new NewSearcherListener();
- DirectUpdateHandler2 updater = (DirectUpdateHandler2)core.getUpdateHandler();
- DirectUpdateHandler2.CommitTracker tracker = updater.tracker;
- tracker.timeUpperBound = 100000;
+ DirectUpdateHandler2 updateHandler = (DirectUpdateHandler2)core.getUpdateHandler();
+ CommitTracker tracker = updateHandler.commitTracker;
+ tracker.timeUpperBound = -1;
tracker.docsUpperBound = 14;
- // updater.commitCallbacks.add(trigger);
+ core.registerNewSearcherListener(trigger);
+
XmlUpdateRequestHandler handler = new XmlUpdateRequestHandler();
handler.init( null );
MapSolrParams params = new MapSolrParams( new HashMap<String, String>() );
- // Add a single document
+ // Add documents
SolrQueryResponse rsp = new SolrQueryResponse();
SolrQueryRequestBase req = new SolrQueryRequestBase( core, params ) {};
for( int i=0; i<14; i++ ) {
req.setContentStreams( toContentStreams(
- adoc("id", "A"+i, "subject", "info" ), null ) );
+ adoc("id", Integer.toString(i), "subject", "info" ), null ) );
handler.handleRequest( req, rsp );
}
// It should not be there right away
- assertQ("shouldn't find any", req("id:A1") ,"//result[@numFound=0]" );
+ assertQ("shouldn't find any", req("id:1") ,"//result[@numFound=0]" );
assertEquals( 0, tracker.getCommitCount());
req.setContentStreams( toContentStreams(
- adoc("id", "A14", "subject", "info" ), null ) );
+ adoc("id", "14", "subject", "info" ), null ) );
handler.handleRequest( req, rsp );
- // Wait longer than the autocommit time
- assertTrue(trigger.waitForCommit(20000));
+
+ assertTrue(trigger.waitForNewSearcher(10000));
req.setContentStreams( toContentStreams(
- adoc("id", "A15", "subject", "info" ), null ) );
+ adoc("id", "15", "subject", "info" ), null ) );
handler.handleRequest( req, rsp );
// Now make sure we can find it
- assertQ("should find one", req("id:A14") ,"//result[@numFound=1]" );
+ assertQ("should find one", req("id:14") ,"//result[@numFound=1]" );
assertEquals( 1, tracker.getCommitCount());
// But not the one added afterward
- assertQ("should not find one", req("id:A15") ,"//result[@numFound=0]" );
+ assertQ("should not find one", req("id:15") ,"//result[@numFound=0]" );
assertEquals( 1, tracker.getCommitCount());
}
public void testMaxTime() throws Exception {
SolrCore core = h.getCore();
- CommitListener trigger = new CommitListener(core);
+ NewSearcherListener trigger = new NewSearcherListener();
core.registerNewSearcherListener(trigger);
DirectUpdateHandler2 updater = (DirectUpdateHandler2) core.getUpdateHandler();
- DirectUpdateHandler2.CommitTracker tracker = updater.tracker;
+ CommitTracker tracker = updater.commitTracker;
// too low of a number can cause a slow host to commit before the test code checks that it
// isn't there... causing a failure at "shouldn't find any"
tracker.timeUpperBound = 1000;
@@ -175,7 +169,7 @@ public class AutoCommitTest extends Abst
assertQ("shouldn't find any", req("id:529") ,"//result[@numFound=0]" );
// Wait longer than the autocommit time
- assertTrue(trigger.waitForCommit(30000));
+ assertTrue(trigger.waitForNewSearcher(30000));
trigger.reset();
req.setContentStreams( toContentStreams(
adoc("id", "530", "field_t", "what's inside?", "subject", "info"), null ) );
@@ -190,7 +184,7 @@ public class AutoCommitTest extends Abst
assertU( delI("529") );
assertQ("deleted, but should still be there", req("id:529") ,"//result[@numFound=1]" );
// Wait longer than the autocommit time
- assertTrue(trigger.waitForCommit(30000));
+ assertTrue(trigger.waitForNewSearcher(30000));
trigger.reset();
req.setContentStreams( toContentStreams(
adoc("id", "550", "field_t", "what's inside?", "subject", "info"), null ) );
@@ -208,7 +202,7 @@ public class AutoCommitTest extends Abst
assertQ("should not be there yet", req("id:500") ,"//result[@numFound=0]" );
// Wait longer than the autocommit time
- assertTrue(trigger.waitForCommit(45000));
+ assertTrue(trigger.waitForNewSearcher(45000));
trigger.reset();
req.setContentStreams( toContentStreams(
@@ -220,4 +214,152 @@ public class AutoCommitTest extends Abst
assertQ("but not this", req("id:531") ,"//result[@numFound=0]" );
}
+ public void testSoftCommitMaxDocs() throws Exception {
+
+ SolrCore core = h.getCore();
+ NewSearcherListener trigger = new NewSearcherListener();
+
+ DirectUpdateHandler2 updateHandler = (DirectUpdateHandler2)core.getUpdateHandler();
+ CommitTracker tracker = updateHandler.commitTracker;
+ tracker.timeUpperBound = -1;
+ tracker.docsUpperBound = 8;
+
+
+ NewSearcherListener softTrigger = new NewSearcherListener();
+
+ CommitTracker softTracker = updateHandler.softCommitTracker;
+ softTracker.timeUpperBound = -1;
+ softTracker.docsUpperBound = 4;
+ core.registerNewSearcherListener(softTrigger);
+
+ XmlUpdateRequestHandler handler = new XmlUpdateRequestHandler();
+ handler.init( null );
+
+ MapSolrParams params = new MapSolrParams( new HashMap<String, String>() );
+
+ // Add documents
+ SolrQueryResponse rsp = new SolrQueryResponse();
+ SolrQueryRequestBase req = new SolrQueryRequestBase( core, params ) {};
+ for( int i=0; i<4; i++ ) {
+ req.setContentStreams( toContentStreams(
+ adoc("id", Integer.toString(i), "subject", "info" ), null ) );
+ handler.handleRequest( req, rsp );
+ }
+ // It should not be there right away
+ assertQ("shouldn't find any", req("id:1") ,"//result[@numFound=0]" );
+ assertEquals( 0, tracker.getCommitCount());
+
+ req.setContentStreams( toContentStreams(
+ adoc("id", "4", "subject", "info" ), null ) );
+ handler.handleRequest( req, rsp );
+
+ assertTrue(softTrigger.waitForNewSearcher(10000));
+
+ core.registerNewSearcherListener(trigger);
+
+ assertQ("should find 5", req("*:*") ,"//result[@numFound=5]" );
+ assertEquals( 1, softTracker.getCommitCount());
+ assertEquals( 0, tracker.getCommitCount());
+
+ req.setContentStreams( toContentStreams(
+ adoc("id", "5", "subject", "info" ), null ) );
+ handler.handleRequest( req, rsp );
+
+ // Now make sure we can find it
+ assertQ("should find one", req("id:4") ,"//result[@numFound=1]" );
+ assertEquals( 1, softTracker.getCommitCount());
+ // But not the one added afterward
+ assertQ("should not find one", req("id:5") ,"//result[@numFound=0]" );
+ assertEquals( 1, softTracker.getCommitCount());
+
+ for( int i=6; i<10; i++ ) {
+ req.setContentStreams( toContentStreams(
+ adoc("id", Integer.toString(i), "subject", "info" ), null ) );
+ handler.handleRequest( req, rsp );
+ }
+ req.close();
+
+
+ assertTrue(trigger.waitForNewSearcher(10000));
+ assertQ("should find 10", req("*:*") ,"//result[@numFound=10]" );
+ assertEquals( 1, softTracker.getCommitCount());
+ assertEquals( 1, tracker.getCommitCount());
+ }
+
+ public void testSoftCommitMaxTime() throws Exception {
+ SolrCore core = h.getCore();
+ NewSearcherListener trigger = new NewSearcherListener();
+ core.registerNewSearcherListener(trigger);
+ DirectUpdateHandler2 updater = (DirectUpdateHandler2) core.getUpdateHandler();
+ CommitTracker tracker = updater.commitTracker;
+ CommitTracker softTracker = updater.softCommitTracker;
+
+ // too low of a number can cause a slow host to commit before the test code checks that it
+ // isn't there... causing a failure at "shouldn't find any"
+ softTracker.timeUpperBound = 2000;
+ softTracker.docsUpperBound = -1;
+ // updater.commitCallbacks.add(trigger);
+
+ XmlUpdateRequestHandler handler = new XmlUpdateRequestHandler();
+ handler.init( null );
+
+ MapSolrParams params = new MapSolrParams( new HashMap<String, String>() );
+
+ // Add a single document
+ SolrQueryResponse rsp = new SolrQueryResponse();
+ SolrQueryRequestBase req = new SolrQueryRequestBase( core, params ) {};
+ req.setContentStreams( toContentStreams(
+ adoc("id", "529", "field_t", "what's inside?", "subject", "info"), null ) );
+ trigger.reset();
+ handler.handleRequest( req, rsp );
+
+ // Check it it is in the index
+ assertQ("shouldn't find any", req("id:529") ,"//result[@numFound=0]" );
+
+ // Wait longer than the autocommit time
+ assertTrue(trigger.waitForNewSearcher(30000));
+ trigger.reset();
+ req.setContentStreams( toContentStreams(
+ adoc("id", "530", "field_t", "what's inside?", "subject", "info"), null ) );
+ handler.handleRequest( req, rsp );
+
+ // Now make sure we can find it
+ assertQ("should find one", req("id:529") ,"//result[@numFound=1]" );
+ // But not this one
+ assertQ("should find none", req("id:530") ,"//result[@numFound=0]" );
+
+ // Delete the document
+ assertU( delI("529") );
+ assertQ("deleted, but should still be there", req("id:529") ,"//result[@numFound=1]" );
+ // Wait longer than the autocommit time
+ assertTrue(trigger.waitForNewSearcher(15000));
+ trigger.reset();
+ req.setContentStreams( toContentStreams(
+ adoc("id", "550", "field_t", "what's inside?", "subject", "info"), null ) );
+ handler.handleRequest( req, rsp );
+ assertEquals( 2, softTracker.getCommitCount() );
+ assertQ("deleted and time has passed", req("id:529") ,"//result[@numFound=0]" );
+
+ // now make the call 5 times really fast and make sure it
+ // only commits once
+ req.setContentStreams( toContentStreams(
+ adoc("id", "500" ), null ) );
+ for( int i=0;i<5; i++ ) {
+ handler.handleRequest( req, rsp );
+ }
+ assertQ("should not be there yet", req("id:500") ,"//result[@numFound=0]" );
+
+ // Wait longer than the autocommit time
+ assertTrue(trigger.waitForNewSearcher(15000));
+ trigger.reset();
+
+ req.setContentStreams( toContentStreams(
+ adoc("id", "531", "field_t", "what's inside?", "subject", "info"), null ) );
+ handler.handleRequest( req, rsp );
+ assertEquals( 3, softTracker.getCommitCount() );
+ assertEquals( 0, tracker.getCommitCount() );
+
+ assertQ("now it should", req("id:500") ,"//result[@numFound=1]" );
+ assertQ("but not this", req("id:531") ,"//result[@numFound=0]" );
+ }
}