You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by si...@apache.org on 2011/02/09 10:36:03 UTC
svn commit: r1068809 [27/36] - in /lucene/dev/branches/docvalues: ./
dev-tools/eclipse/ dev-tools/idea/.idea/ dev-tools/idea/.idea/copyright/
dev-tools/idea/lucene/ dev-tools/idea/lucene/contrib/ant/
dev-tools/idea/lucene/contrib/queryparser/ dev-tools...
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/XMLLoader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/XMLLoader.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/XMLLoader.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/XMLLoader.java Wed Feb 9 09:35:27 2011
@@ -24,6 +24,7 @@ import org.apache.solr.update.DeleteUpda
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.SolrQueryResponse;
import org.apache.solr.common.util.ContentStream;
+import org.apache.solr.common.util.ContentStreamBase;
import org.apache.solr.common.util.StrUtils;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.SolrInputDocument;
@@ -36,8 +37,8 @@ import javax.xml.stream.FactoryConfigura
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLInputFactory;
import javax.xml.transform.TransformerConfigurationException;
-import java.io.Reader;
-import java.io.StringReader;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
import java.io.IOException;
@@ -54,24 +55,31 @@ class XMLLoader extends ContentStreamLoa
this.inputFactory = inputFactory;
}
+ @Override
public void load(SolrQueryRequest req, SolrQueryResponse rsp, ContentStream stream) throws Exception {
errHeader = "XMLLoader: " + stream.getSourceInfo();
- Reader reader = null;
+ InputStream is = null;
+ XMLStreamReader parser = null;
try {
- reader = stream.getReader();
+ is = stream.getStream();
+ final String charset = ContentStreamBase.getCharsetFromContentType(stream.getContentType());
if (XmlUpdateRequestHandler.log.isTraceEnabled()) {
- String body = IOUtils.toString(reader);
- XmlUpdateRequestHandler.log.trace("body", body);
- reader = new StringReader(body);
+ final byte[] body = IOUtils.toByteArray(is);
+ // TODO: The charset may be wrong, as the real charset is later
+ // determined by the XML parser, the content-type is only used as a hint!
+ XmlUpdateRequestHandler.log.trace("body", new String(body, (charset == null) ?
+ ContentStreamBase.DEFAULT_CHARSET : charset));
+ IOUtils.closeQuietly(is);
+ is = new ByteArrayInputStream(body);
}
-
- XMLStreamReader parser = inputFactory.createXMLStreamReader(reader);
+ parser = (charset == null) ?
+ inputFactory.createXMLStreamReader(is) : inputFactory.createXMLStreamReader(is, charset);
this.processUpdate(req, processor, parser);
- }
- catch (XMLStreamException e) {
+ } catch (XMLStreamException e) {
throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e.getMessage(), e);
} finally {
- IOUtils.closeQuietly(reader);
+ if (parser != null) parser.close();
+ IOUtils.closeQuietly(is);
}
}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/XmlUpdateRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/XmlUpdateRequestHandler.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/XmlUpdateRequestHandler.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/XmlUpdateRequestHandler.java Wed Feb 9 09:35:27 2011
@@ -80,6 +80,7 @@ public class XmlUpdateRequestHandler ext
}
}
+ @Override
protected ContentStreamLoader newLoader(SolrQueryRequest req, UpdateRequestProcessor processor) {
return new XMLLoader(processor, inputFactory);
}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java Wed Feb 9 09:35:27 2011
@@ -470,7 +470,7 @@ public class CoreAdminHandler extends Re
info.add("uptime", System.currentTimeMillis() - core.getStartTime());
RefCounted<SolrIndexSearcher> searcher = core.getSearcher();
try {
- info.add("index", LukeRequestHandler.getIndexInfo(searcher.get().getReader(), false));
+ info.add("index", LukeRequestHandler.getIndexInfo(searcher.get().getIndexReader(), false));
} finally {
searcher.decref();
}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/admin/LukeRequestHandler.java Wed Feb 9 09:35:27 2011
@@ -97,7 +97,7 @@ public class LukeRequestHandler extends
{
IndexSchema schema = req.getSchema();
SolrIndexSearcher searcher = req.getSearcher();
- IndexReader reader = searcher.getReader();
+ IndexReader reader = searcher.getIndexReader();
SolrParams params = req.getParams();
int numTerms = params.getInt( NUMTERMS, DEFAULT_COUNT );
@@ -285,7 +285,7 @@ public class LukeRequestHandler extends
final SolrIndexSearcher searcher, final Set<String> fields, final int numTerms )
throws Exception {
- IndexReader reader = searcher.getReader();
+ IndexReader reader = searcher.getIndexReader();
IndexSchema schema = searcher.getSchema();
// Walk the term enum and keep a priority queue for each map in our set
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java Wed Feb 9 09:35:27 2011
@@ -210,7 +210,7 @@ public class ShowFileRequestHandler exte
}
try {
InputStream input = core.getResourceLoader().openResource(path);
- return IOUtils.toString( input );
+ return IOUtils.toString( input, "UTF-8" );
}
catch( Exception ex ) {} // ignore it
return "";
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java Wed Feb 9 09:35:27 2011
@@ -1,5 +1,22 @@
package org.apache.solr.handler.admin;
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
import org.apache.solr.handler.RequestHandlerBase;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.core.SolrInfoMBean;
@@ -32,20 +49,21 @@ public class SolrInfoMBeanHandler extend
}
+ @Override
public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception {
SolrCore core = req.getCore();
- NamedList cats = new NamedList();
+ NamedList<NamedList<NamedList<Object>>> cats = new NamedList<NamedList<NamedList<Object>>>();
rsp.add("solr-mbeans", cats);
String[] requestedCats = req.getParams().getParams("cat");
if (null == requestedCats || 0 == requestedCats.length) {
for (SolrInfoMBean.Category cat : SolrInfoMBean.Category.values()) {
- cats.add(cat.name(), new SimpleOrderedMap());
+ cats.add(cat.name(), new SimpleOrderedMap<NamedList<Object>>());
}
} else {
for (String catName : requestedCats) {
- cats.add(catName,new SimpleOrderedMap());
+ cats.add(catName,new SimpleOrderedMap<NamedList<Object>>());
}
}
@@ -58,10 +76,10 @@ public class SolrInfoMBeanHandler extend
if ( ! ( requestedKeys.isEmpty() || requestedKeys.contains(key) ) ) continue;
- NamedList catInfo = (NamedList) cats.get(m.getCategory().name());
+ NamedList<NamedList<Object>> catInfo = cats.get(m.getCategory().name());
if ( null == catInfo ) continue;
- NamedList mBeanInfo = new SimpleOrderedMap();
+ NamedList<Object> mBeanInfo = new SimpleOrderedMap<Object>();
mBeanInfo.add("class", m.getName());
mBeanInfo.add("version", m.getVersion());
mBeanInfo.add("description", m.getDescription());
@@ -77,18 +95,22 @@ public class SolrInfoMBeanHandler extend
rsp.setHttpCaching(false); // never cache, no matter what init config looks like
}
+ @Override
public String getDescription() {
return "Get Info (and statistics) about all registered SolrInfoMBeans";
}
+ @Override
public String getSourceId() {
return "$Id$";
}
+ @Override
public String getSource() {
return "$URL$";
}
+ @Override
public String getVersion() {
return "$Revision$";
}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java Wed Feb 9 09:35:27 2011
@@ -185,6 +185,7 @@ public class SystemInfoHandler extends R
try {
Process process = Runtime.getRuntime().exec(cmd);
in = new DataInputStream( process.getInputStream() );
+ // use default charset from locale here, because the command invoked also uses the default locale:
return IOUtils.toString( in );
}
catch( Exception ex ) {
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/DebugComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/DebugComponent.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/DebugComponent.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/DebugComponent.java Wed Feb 9 09:35:27 2011
@@ -86,6 +86,7 @@ public class DebugComponent extends Sear
}
+ @Override
public void modifyRequest(ResponseBuilder rb, SearchComponent who, ShardRequest sreq) {
if (!rb.isDebug()) return;
@@ -115,7 +116,7 @@ public class DebugComponent extends Sear
@Override
public void finishStage(ResponseBuilder rb) {
if (rb.isDebug() && rb.stage == ResponseBuilder.STAGE_GET_FIELDS) {
- NamedList info = null;
+ NamedList<Object> info = null;
NamedList explain = new SimpleOrderedMap();
Map.Entry<String, Object>[] arr = new NamedList.NamedListEntry[rb.resultIds.size()];
@@ -140,11 +141,11 @@ public class DebugComponent extends Sear
}
if (rb.isDebugResults()) {
- explain = SolrPluginUtils.removeNulls(new SimpleOrderedMap(arr));
+ explain = SolrPluginUtils.removeNulls(new SimpleOrderedMap<Object>(arr));
}
if (info == null) {
- info = new SimpleOrderedMap();
+ info = new SimpleOrderedMap<Object>();
}
if (rb.isDebugResults()) {
int idx = info.indexOf("explain",0);
@@ -196,9 +197,11 @@ public class DebugComponent extends Sear
if (source instanceof NamedList && dest instanceof NamedList) {
- NamedList tmp = new NamedList();
- NamedList sl = (NamedList)source;
- NamedList dl = (NamedList)dest;
+ NamedList<Object> tmp = new NamedList<Object>();
+ @SuppressWarnings("unchecked")
+ NamedList<Object> sl = (NamedList<Object>)source;
+ @SuppressWarnings("unchecked")
+ NamedList<Object> dl = (NamedList<Object>)dest;
for (int i=0; i<sl.size(); i++) {
String skey = sl.getName(i);
if (exclude != null && exclude.contains(skey)) continue;
@@ -228,7 +231,7 @@ public class DebugComponent extends Sear
}
// merge unlike elements in a list
- List t = new ArrayList();
+ List<Object> t = new ArrayList<Object>();
t.add(dest);
t.add(source);
return t;
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/FacetComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/FacetComponent.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/FacetComponent.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/FacetComponent.java Wed Feb 9 09:35:27 2011
@@ -78,7 +78,7 @@ public class FacetComponent extends Sear
params,
rb );
- NamedList counts = f.getFacetCounts();
+ NamedList<Object> counts = f.getFacetCounts();
String[] pivots = params.getParams( FacetParams.FACET_PIVOT );
if( pivots != null && pivots.length > 0 ) {
NamedList v = pivotHelper.process(rb, params, pivots);
@@ -264,7 +264,9 @@ public class FacetComponent extends Sear
int shardNum = rb.getShardNum(srsp.getShard());
NamedList facet_counts = (NamedList)srsp.getSolrResponse().getResponse().get("facet_counts");
- fi.addExceptions((List)facet_counts.get("exception"));
+ @SuppressWarnings("unchecked")
+ List<String> excepts = (List<String>)facet_counts.get("exception");
+ fi.addExceptions(excepts);
// handle facet queries
NamedList facet_queries = (NamedList)facet_counts.get("facet_queries");
@@ -298,7 +300,10 @@ public class FacetComponent extends Sear
if (dff.limit <= 0) continue; // no need to check these facets for refinement
if (dff.minCount <= 1 && dff.sort.equals(FacetParams.FACET_SORT_INDEX)) continue;
- dff._toRefine = new List[rb.shards.length];
+ @SuppressWarnings("unchecked") // generic array's are anoying
+ List<String>[] tmp = (List<String>[]) new List[rb.shards.length];
+ dff._toRefine = tmp;
+
ShardFacetCount[] counts = dff.getCountSorted();
int ntop = Math.min(counts.length, dff.offset + dff.limit);
long smallestCount = counts.length == 0 ? 0 : counts[ntop-1].count;
@@ -353,8 +358,10 @@ public class FacetComponent extends Sear
// int shardNum = rb.getShardNum(srsp.shard);
NamedList facet_counts = (NamedList)srsp.getSolrResponse().getResponse().get("facet_counts");
NamedList facet_fields = (NamedList)facet_counts.get("facet_fields");
-
- fi.addExceptions((List)facet_counts.get("exception"));
+
+ @SuppressWarnings("unchecked")
+ List<String> excepts = (List<String>)facet_counts.get("exception");
+ fi.addExceptions(excepts);
if (facet_fields == null) continue; // this can happen when there's an exception
@@ -384,23 +391,23 @@ public class FacetComponent extends Sear
FacetInfo fi = rb._facetInfo;
- NamedList facet_counts = new SimpleOrderedMap();
+ NamedList<Object> facet_counts = new SimpleOrderedMap<Object>();
if (fi.exceptionList != null) {
facet_counts.add("exception",fi.exceptionList);
}
- NamedList facet_queries = new SimpleOrderedMap();
+ NamedList<Number> facet_queries = new SimpleOrderedMap<Number>();
facet_counts.add("facet_queries",facet_queries);
for (QueryFacet qf : fi.queryFacets.values()) {
facet_queries.add(qf.getKey(), num(qf.count));
}
- NamedList facet_fields = new SimpleOrderedMap();
+ NamedList<Object> facet_fields = new SimpleOrderedMap<Object>();
facet_counts.add("facet_fields", facet_fields);
for (DistribFieldFacet dff : fi.facets.values()) {
- NamedList fieldCounts = new NamedList(); // order is more important for facets
+ NamedList<Object> fieldCounts = new NamedList<Object>(); // order is more important for facets
facet_fields.add(dff.getKey(), fieldCounts);
ShardFacetCount[] counts;
@@ -486,7 +493,7 @@ public class FacetComponent extends Sear
public static class FacetInfo {
public LinkedHashMap<String,QueryFacet> queryFacets;
public LinkedHashMap<String,DistribFieldFacet> facets;
- public List exceptionList;
+ public List<String> exceptionList;
void parse(SolrParams params, ResponseBuilder rb) {
queryFacets = new LinkedHashMap<String,QueryFacet>();
@@ -510,9 +517,9 @@ public class FacetComponent extends Sear
}
}
- public void addExceptions(List exceptions) {
+ public void addExceptions(List<String> exceptions) {
if (exceptions == null) return;
- if (exceptionList == null) exceptionList = new ArrayList();
+ if (exceptionList == null) exceptionList = new ArrayList<String>();
exceptionList.addAll(exceptions);
}
}
@@ -719,6 +726,7 @@ public class FacetComponent extends Sear
public long count;
public int termNum; // term number starting at 0 (used in bit arrays)
+ @Override
public String toString() {
return "{term="+name+",termNum="+termNum+",count="+count+"}";
}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/HighlightComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/HighlightComponent.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/HighlightComponent.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/HighlightComponent.java Wed Feb 9 09:35:27 2011
@@ -113,7 +113,7 @@ public class HighlightComponent extends
if(highlightQuery != null) {
boolean rewrite = !(Boolean.valueOf(req.getParams().get(HighlightParams.USE_PHRASE_HIGHLIGHTER, "true")) && Boolean.valueOf(req.getParams().get(HighlightParams.HIGHLIGHT_MULTI_TERM, "true")));
- highlightQuery = rewrite ? highlightQuery.rewrite(req.getSearcher().getReader()) : highlightQuery;
+ highlightQuery = rewrite ? highlightQuery.rewrite(req.getSearcher().getIndexReader()) : highlightQuery;
}
// No highlighting if there is no query -- consider q.alt="*:*
@@ -131,6 +131,7 @@ public class HighlightComponent extends
}
}
+ @Override
public void modifyRequest(ResponseBuilder rb, SearchComponent who, ShardRequest sreq) {
if (!rb.doHighlights) return;
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/MoreLikeThisComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/MoreLikeThisComponent.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/MoreLikeThisComponent.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/MoreLikeThisComponent.java Wed Feb 9 09:35:27 2011
@@ -23,8 +23,12 @@ import java.net.URL;
import org.apache.solr.common.params.MoreLikeThisParams;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
+import org.apache.solr.common.util.SimpleOrderedMap;
import org.apache.solr.handler.MoreLikeThisHandler;
+import org.apache.solr.schema.IndexSchema;
+import org.apache.solr.search.DocIterator;
import org.apache.solr.search.DocList;
+import org.apache.solr.search.DocListAndSet;
import org.apache.solr.search.SolrIndexSearcher;
/**
@@ -50,18 +54,59 @@ public class MoreLikeThisComponent exten
if( p.getBool( MoreLikeThisParams.MLT, false ) ) {
SolrIndexSearcher searcher = rb.req.getSearcher();
- MoreLikeThisHandler.MoreLikeThisHelper mlt
- = new MoreLikeThisHandler.MoreLikeThisHelper( p, searcher );
-
- int mltcount = p.getInt( MoreLikeThisParams.DOC_COUNT, 5 );
- NamedList<DocList> sim = mlt.getMoreLikeThese(
- rb.getResults().docList, mltcount, rb.getFieldFlags() );
+ NamedList<DocList> sim = getMoreLikeThese( rb, searcher,
+ rb.getResults().docList, rb.getFieldFlags() );
// TODO ???? add this directly to the response?
rb.rsp.add( "moreLikeThis", sim );
}
}
+ NamedList<DocList> getMoreLikeThese( ResponseBuilder rb, SolrIndexSearcher searcher,
+ DocList docs, int flags ) throws IOException {
+ SolrParams p = rb.req.getParams();
+ IndexSchema schema = searcher.getSchema();
+ MoreLikeThisHandler.MoreLikeThisHelper mltHelper
+ = new MoreLikeThisHandler.MoreLikeThisHelper( p, searcher );
+ NamedList<DocList> mlt = new SimpleOrderedMap<DocList>();
+ DocIterator iterator = docs.iterator();
+
+ SimpleOrderedMap<Object> dbg = null;
+ if( rb.isDebug() ){
+ dbg = new SimpleOrderedMap<Object>();
+ }
+
+ while( iterator.hasNext() ) {
+ int id = iterator.nextDoc();
+ int rows = p.getInt( MoreLikeThisParams.DOC_COUNT, 5 );
+ DocListAndSet sim = mltHelper.getMoreLikeThis( id, 0, rows, null, null, flags );
+ String name = schema.printableUniqueKey( searcher.doc( id ) );
+ mlt.add(name, sim.docList);
+
+ if( dbg != null ){
+ SimpleOrderedMap<Object> docDbg = new SimpleOrderedMap<Object>();
+ docDbg.add( "rawMLTQuery", mltHelper.getRawMLTQuery().toString() );
+ docDbg.add( "boostedMLTQuery", mltHelper.getBoostedMLTQuery().toString() );
+ docDbg.add( "realMLTQuery", mltHelper.getRealMLTQuery().toString() );
+ SimpleOrderedMap<Object> explains = new SimpleOrderedMap<Object>();
+ DocIterator mltIte = sim.docList.iterator();
+ while( mltIte.hasNext() ){
+ int mltid = mltIte.nextDoc();
+ String key = schema.printableUniqueKey( searcher.doc( mltid ) );
+ explains.add( key, searcher.explain( mltHelper.getRealMLTQuery(), mltid ) );
+ }
+ docDbg.add( "explain", explains );
+ dbg.add( name, docDbg );
+ }
+ }
+
+ // add debug information
+ if( dbg != null ){
+ rb.addDebugInfo( "moreLikeThis", dbg );
+ }
+ return mlt;
+ }
+
/////////////////////////////////////////////
/// SolrInfoMBean
////////////////////////////////////////////
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/PivotFacetHelper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/PivotFacetHelper.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/PivotFacetHelper.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/PivotFacetHelper.java Wed Feb 9 09:35:27 2011
@@ -102,7 +102,7 @@ public class PivotFacetHelper
List<NamedList<Object>> values = new ArrayList<NamedList<Object>>( superFacets.size() );
for (Map.Entry<String, Integer> kv : superFacets) {
// Only sub-facet if parent facet has positive count - still may not be any values for the sub-field though
- if (kv.getValue() > minMatch ) {
+ if (kv.getValue() >= minMatch ) {
// don't reuse the same BytesRef each time since we will be constructing Term
// objects that will most likely be cached.
BytesRef termval = new BytesRef();
@@ -122,7 +122,7 @@ public class PivotFacetHelper
SimpleFacets sf = getFacetImplementation(rb.req, subset, rb.req.getParams());
NamedList<Integer> nl = sf.getTermCounts(subField);
- if (nl.size() > minMatch ) {
+ if (nl.size() >= minMatch ) {
pivot.add( "pivot", doPivots( nl, subField, nextField, fnames, rb, subset, minMatch ) );
values.add( pivot ); // only add response if there are some counts
}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/QueryComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/QueryComponent.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/QueryComponent.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/QueryComponent.java Wed Feb 9 09:35:27 2011
@@ -18,10 +18,13 @@
package org.apache.solr.handler.component;
import org.apache.lucene.document.Field;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
+import org.apache.lucene.index.IndexReader.ReaderContext;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.search.*;
import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.ReaderUtil;
import org.apache.solr.cloud.CloudDescriptor;
import org.apache.solr.cloud.ZkController;
import org.apache.solr.common.SolrDocument;
@@ -104,7 +107,6 @@ public class QueryComponent extends Sear
List<Query> filters = rb.getFilters();
if (filters==null) {
filters = new ArrayList<Query>(fqs.length);
- rb.setFilters( filters );
}
for (String fq : fqs) {
if (fq != null && fq.trim().length()!=0) {
@@ -112,6 +114,12 @@ public class QueryComponent extends Sear
filters.add(fqp.getQuery());
}
}
+ // only set the filters if they are not empty otherwise
+ // fq=&someotherParam= will trigger all docs filter for every request
+ // if filter cache is disabled
+ if (!filters.isEmpty()) {
+ rb.setFilters( filters );
+ }
}
} catch (ParseException e) {
throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
@@ -440,27 +448,25 @@ public class QueryComponent extends Sear
// take the documents given and re-derive the sort values.
boolean fsv = req.getParams().getBool(ResponseBuilder.FIELD_SORT_VALUES,false);
if(fsv){
- Sort sort = rb.getSortSpec().getSort();
+ Sort sort = searcher.weightSort(rb.getSortSpec().getSort());
SortField[] sortFields = sort==null ? new SortField[]{SortField.FIELD_SCORE} : sort.getSort();
NamedList sortVals = new NamedList(); // order is important for the sort fields
Field field = new Field("dummy", "", Field.Store.YES, Field.Index.NO); // a dummy Field
-
- SolrIndexReader reader = searcher.getReader();
- SolrIndexReader[] readers = reader.getLeafReaders();
- SolrIndexReader subReader = reader;
- if (readers.length==1) {
+ ReaderContext topReaderContext = searcher.getTopReaderContext();
+ AtomicReaderContext[] leaves = ReaderUtil.leaves(topReaderContext);
+ AtomicReaderContext currentLeaf = null;
+ if (leaves.length==1) {
// if there is a single segment, use that subReader and avoid looking up each time
- subReader = readers[0];
- readers=null;
+ currentLeaf = leaves[0];
+ leaves=null;
}
- int[] offsets = reader.getLeafOffsets();
for (SortField sortField: sortFields) {
int type = sortField.getType();
if (type==SortField.SCORE || type==SortField.DOC) continue;
FieldComparator comparator = null;
- FieldComparator comparators[] = (readers==null) ? null : new FieldComparator[readers.length];
+ FieldComparator comparators[] = (leaves==null) ? null : new FieldComparator[leaves.length];
String fieldname = sortField.getField();
FieldType ft = fieldname==null ? null : req.getSchema().getFieldTypeNoEx(fieldname);
@@ -469,26 +475,24 @@ public class QueryComponent extends Sear
ArrayList<Object> vals = new ArrayList<Object>(docList.size());
DocIterator it = rb.getResults().docList.iterator();
- int offset = 0;
int idx = 0;
while(it.hasNext()) {
int doc = it.nextDoc();
- if (readers != null) {
- idx = SolrIndexReader.readerIndex(doc, offsets);
- subReader = readers[idx];
- offset = offsets[idx];
+ if (leaves != null) {
+ idx = ReaderUtil.subIndex(doc, leaves);
+ currentLeaf = leaves[idx];
comparator = comparators[idx];
}
if (comparator == null) {
comparator = sortField.getComparator(1,0);
- comparator = comparator.setNextReader(subReader, offset);
+ comparator = comparator.setNextReader(currentLeaf);
if (comparators != null)
comparators[idx] = comparator;
}
- doc -= offset; // adjust for what segment this is in
+ doc -= currentLeaf.docBase; // adjust for what segment this is in
comparator.copy(0, doc);
Object val = comparator.value(0);
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/QueryElevationComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/QueryElevationComponent.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/QueryElevationComponent.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/QueryElevationComponent.java Wed Feb 9 09:35:27 2011
@@ -43,6 +43,7 @@ import org.apache.lucene.analysis.Analyz
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.*;
import org.apache.lucene.util.StringHelper;
@@ -199,7 +200,7 @@ public class QueryElevationComponent ext
RefCounted<SolrIndexSearcher> searchHolder = null;
try {
searchHolder = core.getNewestSearcher(false);
- IndexReader reader = searchHolder.get().getReader();
+ IndexReader reader = searchHolder.get().getIndexReader();
getElevationMap( reader, core );
} finally {
if (searchHolder != null) searchHolder.decref();
@@ -343,7 +344,7 @@ public class QueryElevationComponent ext
}
qstr = getAnalyzedQuery(qstr);
- IndexReader reader = req.getSearcher().getReader();
+ IndexReader reader = req.getSearcher().getIndexReader();
ElevationObj booster = null;
try {
booster = getElevationMap( reader, req.getCore() ).get( qstr );
@@ -473,6 +474,7 @@ class ElevationComparatorSource extends
this.priority = boosts;
}
+ @Override
public FieldComparator newComparator(final String fieldname, final int numHits, int sortPos, boolean reversed) throws IOException {
return new FieldComparator() {
@@ -481,10 +483,12 @@ class ElevationComparatorSource extends
int bottomVal;
private final BytesRef tempBR = new BytesRef();
+ @Override
public int compare(int slot1, int slot2) {
return values[slot2] - values[slot1]; // values will be small enough that there is no overflow concern
}
+ @Override
public void setBottom(int slot) {
bottomVal = values[slot];
}
@@ -495,19 +499,23 @@ class ElevationComparatorSource extends
return prio == null ? 0 : prio.intValue();
}
+ @Override
public int compareBottom(int doc) throws IOException {
return docVal(doc) - bottomVal;
}
+ @Override
public void copy(int slot, int doc) throws IOException {
values[slot] = docVal(doc);
}
- public FieldComparator setNextReader(IndexReader reader, int docBase) throws IOException {
- idIndex = FieldCache.DEFAULT.getTermsIndex(reader, fieldname);
+ @Override
+ public FieldComparator setNextReader(AtomicReaderContext context) throws IOException {
+ idIndex = FieldCache.DEFAULT.getTermsIndex(context.reader, fieldname);
return this;
}
+ @Override
public Comparable value(int slot) {
return values[slot];
}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/ShardDoc.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/ShardDoc.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/ShardDoc.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/ShardDoc.java Wed Feb 9 09:35:27 2011
@@ -56,6 +56,7 @@ public class ShardDoc {
int positionInResponse;
// the ordinal position in the merged response arraylist
+ @Override
public String toString(){
return "id="+id
+" ,score="+score
@@ -226,6 +227,7 @@ class ShardFieldSortedHitQueue extends P
// the negative sign on the final compareTo().
Comparator comparatorNatural(String fieldName) {
return new ShardComparator(fieldName) {
+ @Override
public final int compare(final Object o1, final Object o2) {
ShardDoc sd1 = (ShardDoc) o1;
ShardDoc sd2 = (ShardDoc) o2;
@@ -247,6 +249,7 @@ class ShardFieldSortedHitQueue extends P
Locale locale) {
final Collator collator = Collator.getInstance(locale);
return new ShardComparator(fieldName) {
+ @Override
public final int compare(final Object o1, final Object o2) {
ShardDoc sd1 = (ShardDoc) o1;
ShardDoc sd2 = (ShardDoc) o2;
@@ -266,6 +269,7 @@ class ShardFieldSortedHitQueue extends P
Comparator comparatorMissingStringLast(final String fieldName) {
return new ShardComparator(fieldName) {
+ @Override
public final int compare(final Object o1, final Object o2) {
ShardDoc sd1 = (ShardDoc) o1;
ShardDoc sd2 = (ShardDoc) o2;
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/ShardRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/ShardRequest.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/ShardRequest.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/ShardRequest.java Wed Feb 9 09:35:27 2011
@@ -56,6 +56,7 @@ public class ShardRequest {
// this would work well if we ever transitioned to using internal ids and
// didn't require a uniqueId
+ @Override
public String toString() {
return "ShardRequest:{params=" + params
+ ", purpose=" + Integer.toHexString(purpose)
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/ShardResponse.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/ShardResponse.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/ShardResponse.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/ShardResponse.java Wed Feb 9 09:35:27 2011
@@ -27,6 +27,7 @@ public final class ShardResponse {
private Throwable exception;
private SolrResponse rsp;
+ @Override
public String toString() {
return "ShardResponse:{shard="+shard+",shardAddress="+shardAddress
+"\n\trequest=" + req
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/SpellCheckComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/SpellCheckComponent.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/SpellCheckComponent.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/SpellCheckComponent.java Wed Feb 9 09:35:27 2011
@@ -143,7 +143,7 @@ public class SpellCheckComponent extends
boolean extendedResults = params.getBool(SPELLCHECK_EXTENDED_RESULTS,
false);
NamedList response = new SimpleOrderedMap();
- IndexReader reader = rb.req.getSearcher().getReader();
+ IndexReader reader = rb.req.getSearcher().getIndexReader();
boolean collate = params.getBool(SPELLCHECK_COLLATE, false);
float accuracy = params.getFloat(SPELLCHECK_ACCURACY, Float.MIN_VALUE);
SolrParams customParams = getCustomParams(getDictionaryName(params), params, shardRequest);
@@ -678,7 +678,7 @@ public class SpellCheckComponent extends
if (buildOnCommit) {
buildSpellIndex(newSearcher);
} else if (buildOnOptimize) {
- if (newSearcher.getReader().isOptimized()) {
+ if (newSearcher.getIndexReader().isOptimized()) {
buildSpellIndex(newSearcher);
} else {
LOG.info("Index is not optimized therefore skipping building spell check index for: " + checker.getDictionaryName());
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/StatsComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/StatsComponent.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/StatsComponent.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/StatsComponent.java Wed Feb 9 09:35:27 2011
@@ -124,8 +124,8 @@ public class StatsComponent extends Sear
StatsInfo si = rb._statsInfo;
- NamedList stats = new SimpleOrderedMap();
- NamedList stats_fields = new SimpleOrderedMap();
+ NamedList<NamedList<Object>> stats = new SimpleOrderedMap<NamedList<Object>>();
+ NamedList<Object> stats_fields = new SimpleOrderedMap<Object>();
stats.add("stats_fields", stats_fields);
for (String field : si.statsFields.keySet()) {
NamedList stv = si.statsFields.get(field).getStatsValues();
@@ -209,8 +209,8 @@ class SimpleStats {
return res;
}
- public NamedList getStatsFields() throws IOException {
- NamedList<NamedList<Number>> res = new SimpleOrderedMap<NamedList<Number>>();
+ public NamedList<Object> getStatsFields() throws IOException {
+ NamedList<Object> res = new SimpleOrderedMap<Object>();
String[] statsFs = params.getParams(StatsParams.STATS_FIELD);
boolean isShard = params.getBool(ShardParams.IS_SHARD, false);
if (null != statsFs) {
@@ -221,7 +221,7 @@ class SimpleStats {
}
SchemaField sf = searcher.getSchema().getField(f);
FieldType ft = sf.getType();
- NamedList stv;
+ NamedList<?> stv;
// Currently, only UnInvertedField can deal with multi-part trie fields
String prefix = TrieField.getMainValuePrefix(ft);
@@ -243,12 +243,12 @@ class SimpleStats {
return res;
}
- public NamedList getFieldCacheStats(String fieldName, String[] facet ) {
+ public NamedList<?> getFieldCacheStats(String fieldName, String[] facet ) {
FieldType ft = searcher.getSchema().getFieldType(fieldName);
FieldCache.DocTermsIndex si = null;
try {
- si = FieldCache.DEFAULT.getTermsIndex(searcher.getReader(), fieldName);
+ si = FieldCache.DEFAULT.getTermsIndex(searcher.getIndexReader(), fieldName);
}
catch (IOException e) {
throw new RuntimeException( "failed to open field cache for: "+fieldName, e );
@@ -263,7 +263,7 @@ class SimpleStats {
for( String f : facet ) {
ft = searcher.getSchema().getFieldType(f);
try {
- si = FieldCache.DEFAULT.getTermsIndex(searcher.getReader(), f);
+ si = FieldCache.DEFAULT.getTermsIndex(searcher.getIndexReader(), f);
}
catch (IOException e) {
throw new RuntimeException( "failed to open field cache for: "+f, e );
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/TermVectorComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/TermVectorComponent.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/TermVectorComponent.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/TermVectorComponent.java Wed Feb 9 09:35:27 2011
@@ -61,6 +61,20 @@ import java.util.Map;
* term, frequency, position, offset, IDF.
* <p/>
* <b>Note</b> Returning IDF can be expensive.
+ *
+ * <pre class="prettyprint">
+ * <searchComponent name="tvComponent" class="solr.TermVectorComponent"/>
+ *
+ * <requestHandler name="/terms" class="solr.SearchHandler">
+ * <lst name="defaults">
+ * <bool name="tv">true</bool>
+ * </lst>
+ * <arr name="last-component">
+ * <str>tvComponent</str>
+ * </arr>
+ * </requestHandler></pre>
+ *
+ * @version $Id$
*/
public class TermVectorComponent extends SearchComponent implements SolrCoreAware {
@@ -71,13 +85,14 @@ public class TermVectorComponent extends
public static final String TERM_VECTORS = "termVectors";
+ @Override
public void process(ResponseBuilder rb) throws IOException {
SolrParams params = rb.req.getParams();
if (!params.getBool(COMPONENT_NAME, false)) {
return;
}
- NamedList termVectors = new NamedList();
+ NamedList<Object> termVectors = new NamedList<Object>();
rb.rsp.add(TERM_VECTORS, termVectors);
FieldOptions allFields = new FieldOptions();
//figure out what options we have, and try to get the appropriate vector
@@ -106,7 +121,7 @@ public class TermVectorComponent extends
IndexSchema schema = rb.req.getSchema();
//Build up our per field mapping
Map<String, FieldOptions> fieldOptions = new HashMap<String, FieldOptions>();
- NamedList warnings = new NamedList();
+ NamedList<List<String>> warnings = new NamedList<List<String>>();
List<String> noTV = new ArrayList<String>();
List<String> noPos = new ArrayList<String>();
List<String> noOff = new ArrayList<String>();
@@ -174,7 +189,7 @@ public class TermVectorComponent extends
}
SolrIndexSearcher searcher = rb.req.getSearcher();
- IndexReader reader = searcher.getReader();
+ IndexReader reader = searcher.getIndexReader();
//the TVMapper is a TermVectorMapper which can be used to optimize loading of Term Vectors
SchemaField keyField = schema.getUniqueKeyField();
String uniqFieldName = null;
@@ -187,7 +202,7 @@ public class TermVectorComponent extends
mapper.fieldOptions = allFields; //this will only stay set if fieldOptions.isEmpty() (in other words, only if the user didn't set any fields)
while (iter.hasNext()) {
Integer docId = iter.next();
- NamedList docNL = new NamedList();
+ NamedList<Object> docNL = new NamedList<Object>();
mapper.docNL = docNL;
termVectors.add("doc-" + docId, docNL);
@@ -272,7 +287,7 @@ public class TermVectorComponent extends
private static class TVMapper extends TermVectorMapper {
private IndexReader reader;
- private NamedList docNL;
+ private NamedList<Object> docNL;
//needs to be set for each new field
FieldOptions fieldOptions;
@@ -280,7 +295,7 @@ public class TermVectorComponent extends
//internal vars not passed in by construction
private boolean useOffsets, usePositions;
//private Map<String, Integer> idfCache;
- private NamedList fieldNL;
+ private NamedList<Object> fieldNL;
private Term currentTerm;
@@ -288,35 +303,36 @@ public class TermVectorComponent extends
this.reader = reader;
}
+ @Override
public void map(BytesRef term, int frequency, TermVectorOffsetInfo[] offsets, int[] positions) {
- NamedList termInfo = new NamedList();
- fieldNL.add(term.utf8ToString(), termInfo);
- if (fieldOptions.termFreq == true) {
- termInfo.add("tf", frequency);
- }
- if (useOffsets == true) {
- NamedList theOffsets = new NamedList();
- termInfo.add("offsets", theOffsets);
- for (int i = 0; i < offsets.length; i++) {
- TermVectorOffsetInfo offset = offsets[i];
- theOffsets.add("start", offset.getStartOffset());
- theOffsets.add("end", offset.getEndOffset());
- }
- }
- if (usePositions == true) {
- NamedList positionsNL = new NamedList();
- for (int i = 0; i < positions.length; i++) {
- positionsNL.add("position", positions[i]);
- }
- termInfo.add("positions", positionsNL);
- }
- if (fieldOptions.docFreq == true) {
- termInfo.add("df", getDocFreq(term));
+ NamedList<Object> termInfo = new NamedList<Object>();
+ fieldNL.add(term.utf8ToString(), termInfo);
+ if (fieldOptions.termFreq == true) {
+ termInfo.add("tf", frequency);
+ }
+ if (useOffsets == true) {
+ NamedList<Number> theOffsets = new NamedList<Number>();
+ termInfo.add("offsets", theOffsets);
+ for (int i = 0; i < offsets.length; i++) {
+ TermVectorOffsetInfo offset = offsets[i];
+ theOffsets.add("start", offset.getStartOffset());
+ theOffsets.add("end", offset.getEndOffset());
}
- if (fieldOptions.tfIdf == true) {
- double tfIdfVal = ((double) frequency) / getDocFreq(term);
- termInfo.add("tf-idf", tfIdfVal);
+ }
+ if (usePositions == true) {
+ NamedList<Integer> positionsNL = new NamedList<Integer>();
+ for (int i = 0; i < positions.length; i++) {
+ positionsNL.add("position", positions[i]);
}
+ termInfo.add("positions", positionsNL);
+ }
+ if (fieldOptions.docFreq == true) {
+ termInfo.add("df", getDocFreq(term));
+ }
+ if (fieldOptions.tfIdf == true) {
+ double tfIdfVal = ((double) frequency) / getDocFreq(term);
+ termInfo.add("tf-idf", tfIdfVal);
+ }
}
private int getDocFreq(BytesRef term) {
@@ -336,6 +352,7 @@ public class TermVectorComponent extends
return result;
}
+ @Override
public void setExpectations(String field, int numTerms, boolean storeOffsets, boolean storePositions) {
if (fieldOptions.docFreq == true && reader != null) {
@@ -343,7 +360,7 @@ public class TermVectorComponent extends
}
useOffsets = storeOffsets && fieldOptions.offsets;
usePositions = storePositions && fieldOptions.positions;
- fieldNL = new NamedList();
+ fieldNL = new NamedList<Object>();
docNL.add(field, fieldNL);
}
@@ -358,6 +375,7 @@ public class TermVectorComponent extends
}
}
+ @Override
public void prepare(ResponseBuilder rb) throws IOException {
}
@@ -374,18 +392,22 @@ public class TermVectorComponent extends
}
+ @Override
public String getVersion() {
return "$Revision$";
}
+ @Override
public String getSourceId() {
return "$Id$";
}
+ @Override
public String getSource() {
return "$URL$";
}
+ @Override
public String getDescription() {
return "A Component for working with Term Vectors";
}
@@ -394,4 +416,4 @@ public class TermVectorComponent extends
class FieldOptions {
String fieldName;
boolean termFreq, positions, offsets, docFreq, tfIdf;
-}
\ No newline at end of file
+}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/TermsComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/TermsComponent.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/TermsComponent.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/handler/component/TermsComponent.java Wed Feb 9 09:35:27 2011
@@ -27,7 +27,6 @@ import org.apache.solr.common.util.StrUt
import org.apache.solr.schema.FieldType;
import org.apache.solr.schema.StrField;
import org.apache.solr.request.SimpleFacets.CountPair;
-import org.apache.solr.search.SolrIndexReader;
import org.apache.solr.util.BoundedTreeSet;
import org.apache.solr.client.solrj.response.TermsResponse;
@@ -42,9 +41,22 @@ import java.util.regex.Pattern;
/**
* Return TermEnum information, useful for things like auto suggest.
+ *
+ * <pre class="prettyprint">
+ * <searchComponent name="termsComponent" class="solr.TermsComponent"/>
+ *
+ * <requestHandler name="/terms" class="solr.SearchHandler">
+ * <lst name="defaults">
+ * <bool name="terms">true</bool>
+ * </lst>
+ * <arr name="components">
+ * <str>termsComponent</str>
+ * </arr>
+ * </requestHandler></pre>
*
* @see org.apache.solr.common.params.TermsParams
* See Lucene's TermEnum class
+ * @version $Id$
*/
public class TermsComponent extends SearchComponent {
public static final int UNLIMITED_MAX_COUNT = -1;
@@ -69,13 +81,14 @@ public class TermsComponent extends Sear
}
}
+ @Override
public void process(ResponseBuilder rb) throws IOException {
SolrParams params = rb.req.getParams();
if (!params.getBool(TermsParams.TERMS, false)) return;
String[] fields = params.getParams(TermsParams.TERMS_FIELD);
- NamedList termsResult = new SimpleOrderedMap();
+ NamedList<Object> termsResult = new SimpleOrderedMap<Object>();
rb.rsp.add("terms", termsResult);
if (fields == null || fields.length==0) return;
@@ -103,11 +116,11 @@ public class TermsComponent extends Sear
boolean raw = params.getBool(TermsParams.TERMS_RAW, false);
- SolrIndexReader sr = rb.req.getSearcher().getReader();
- Fields lfields = MultiFields.getFields(sr);
+ final IndexReader indexReader = rb.req.getSearcher().getTopReaderContext().reader;
+ Fields lfields = MultiFields.getFields(indexReader);
for (String field : fields) {
- NamedList fieldTerms = new NamedList();
+ NamedList<Integer> fieldTerms = new NamedList<Integer>();
termsResult.add(field, fieldTerms);
Terms terms = lfields == null ? null : lfields.terms(field);
@@ -273,7 +286,9 @@ public class TermsComponent extends Sear
TermsHelper th = rb._termsHelper;
if (th != null) {
for (ShardResponse srsp : sreq.responses) {
- th.parse((NamedList) srsp.getSolrResponse().getResponse().get("terms"));
+ @SuppressWarnings("unchecked")
+ NamedList<NamedList<Number>> terms = (NamedList<NamedList<Number>>) srsp.getSolrResponse().getResponse().get("terms");
+ th.parse(terms);
}
}
}
@@ -331,7 +346,7 @@ public class TermsComponent extends Sear
}
}
- public void parse(NamedList terms) {
+ public void parse(NamedList<NamedList<Number>> terms) {
// exit if there is no terms
if (terms == null) {
return;
@@ -364,7 +379,7 @@ public class TermsComponent extends Sear
}
public NamedList buildResponse() {
- NamedList response = new SimpleOrderedMap();
+ NamedList<Object> response = new SimpleOrderedMap<Object>();
// determine if we are going index or count sort
boolean sort = !TermsParams.TERMS_SORT_INDEX.equals(params.get(
@@ -393,7 +408,7 @@ public class TermsComponent extends Sear
// loop though each field we want terms from
for (String key : fieldmap.keySet()) {
- NamedList fieldterms = new SimpleOrderedMap();
+ NamedList<Number> fieldterms = new SimpleOrderedMap<Number>();
TermsResponse.Term[] data = null;
if (sort) {
data = getCountSorted(fieldmap.get(key));
@@ -462,18 +477,22 @@ public class TermsComponent extends Sear
}
}
+ @Override
public String getVersion() {
return "$Revision$";
}
+ @Override
public String getSourceId() {
return "$Id$";
}
+ @Override
public String getSource() {
return "$URL$";
}
+ @Override
public String getDescription() {
return "A Component for working with Term Enumerators";
}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java Wed Feb 9 09:35:27 2011
@@ -120,6 +120,7 @@ public class DefaultSolrHighlighter exte
}
//just for back-compat with the deprecated method
private boolean initialized = false;
+ @Override
@Deprecated
public void initalize( SolrConfig config) {
if (initialized) return;
@@ -216,7 +217,7 @@ public class DefaultSolrHighlighter exte
private Scorer getQueryScorer(Query query, String fieldName, SolrQueryRequest request) {
boolean reqFieldMatch = request.getParams().getFieldBool(fieldName, HighlightParams.FIELD_MATCH, false);
if (reqFieldMatch) {
- return new QueryTermScorer(query, request.getSearcher().getReader(), fieldName);
+ return new QueryTermScorer(query, request.getSearcher().getIndexReader(), fieldName);
}
else {
return new QueryTermScorer(query);
@@ -333,6 +334,7 @@ public class DefaultSolrHighlighter exte
* @return NamedList containing a NamedList for each document, which in
* turns contains sets (field, summary) pairs.
*/
+ @Override
@SuppressWarnings("unchecked")
public NamedList<Object> doHighlighting(DocList docs, Query query, SolrQueryRequest req, String[] defaultFields) throws IOException {
SolrParams params = req.getParams();
@@ -415,7 +417,7 @@ public class DefaultSolrHighlighter exte
TermOffsetsTokenStream tots = null; // to be non-null iff we're using TermOffsets optimization
try {
- TokenStream tvStream = TokenSources.getTokenStream(searcher.getReader(), docId, fieldName);
+ TokenStream tvStream = TokenSources.getTokenStream(searcher.getIndexReader(), docId, fieldName);
if (tvStream != null) {
tots = new TermOffsetsTokenStream(tvStream);
}
@@ -503,7 +505,7 @@ public class DefaultSolrHighlighter exte
String fieldName ) throws IOException {
SolrParams params = req.getParams();
SolrFragmentsBuilder solrFb = getSolrFragmentsBuilder( fieldName, params );
- String[] snippets = highlighter.getBestFragments( fieldQuery, req.getSearcher().getReader(), docId, fieldName,
+ String[] snippets = highlighter.getBestFragments( fieldQuery, req.getSearcher().getIndexReader(), docId, fieldName,
params.getFieldInt( fieldName, HighlightParams.FRAGSIZE, 100 ),
params.getFieldInt( fieldName, HighlightParams.SNIPPETS, 1 ),
getFragListBuilder( fieldName, params ),
@@ -639,6 +641,7 @@ class TermOffsetsTokenStream {
this.length = length;
}
+ @Override
public boolean incrementToken() throws IOException {
while( true ){
if( bufferedToken == null ) {
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/highlight/GapFragmenter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/highlight/GapFragmenter.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/highlight/GapFragmenter.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/highlight/GapFragmenter.java Wed Feb 9 09:35:27 2011
@@ -92,6 +92,7 @@ class LuceneGapFragmenter extends Simple
/* (non-Javadoc)
* @see org.apache.lucene.search.highlight.TextFragmenter#start(java.lang.String)
*/
+ @Override
public void start(String originalText, TokenStream tokenStream) {
offsetAtt = tokenStream.getAttribute(OffsetAttribute.class);
posIncAtt = tokenStream.getAttribute(PositionIncrementAttribute.class);
@@ -101,6 +102,7 @@ class LuceneGapFragmenter extends Simple
/* (non-Javadoc)
* @see org.apache.lucene.search.highlight.TextFragmenter#isNewFragment(org.apache.lucene.analysis.Token)
*/
+ @Override
public boolean isNewFragment() {
int endOffset = offsetAtt.endOffset();
boolean isNewFrag =
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/highlight/RegexFragmenter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/highlight/RegexFragmenter.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/highlight/RegexFragmenter.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/highlight/RegexFragmenter.java Wed Feb 9 09:35:27 2011
@@ -54,6 +54,7 @@ public class RegexFragmenter extends Hig
protected String defaultPatternRaw;
protected Pattern defaultPattern;
+ @Override
public void init(NamedList args) {
super.init(args);
defaultPatternRaw = LuceneRegexFragmenter.DEFAULT_PATTERN_RAW;
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/request/PerSegmentSingleValuedFaceting.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/request/PerSegmentSingleValuedFaceting.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/request/PerSegmentSingleValuedFaceting.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/request/PerSegmentSingleValuedFaceting.java Wed Feb 9 09:35:27 2011
@@ -1,5 +1,23 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
package org.apache.solr.request;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.index.TermsEnum;
import org.apache.lucene.search.DocIdSet;
import org.apache.lucene.search.DocIdSetIterator;
@@ -7,6 +25,7 @@ import org.apache.lucene.search.FieldCac
import org.apache.lucene.search.Filter;
import org.apache.lucene.util.PriorityQueue;
import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.ReaderUtil;
import org.apache.lucene.util.packed.Direct16;
import org.apache.lucene.util.packed.Direct32;
import org.apache.lucene.util.packed.Direct8;
@@ -16,7 +35,6 @@ import org.apache.solr.common.params.Fac
import org.apache.solr.common.util.NamedList;
import org.apache.solr.schema.FieldType;
import org.apache.solr.search.DocSet;
-import org.apache.solr.search.SolrIndexReader;
import org.apache.solr.search.SolrIndexSearcher;
import org.apache.solr.util.BoundedTreeSet;
import org.apache.solr.util.ByteUtils;
@@ -60,17 +78,14 @@ class PerSegmentSingleValuedFaceting {
}
- NamedList getFacetCounts(Executor executor) throws IOException {
+ NamedList<Integer> getFacetCounts(Executor executor) throws IOException {
CompletionService<SegFacet> completionService = new ExecutorCompletionService<SegFacet>(executor);
// reuse the translation logic to go from top level set to per-segment set
baseSet = docs.getTopFilter();
- SolrIndexReader topReader = searcher.getReader();
- final SolrIndexReader[] leafReaders = topReader.getLeafReaders();
- int[] offsets = topReader.getLeafOffsets();
-
+ final AtomicReaderContext[] leaves = ReaderUtil.leaves(searcher.getTopReaderContext());
// The list of pending tasks that aren't immediately submitted
// TODO: Is there a completion service, or a delegating executor that can
// limit the number of concurrent tasks submitted to a bigger executor?
@@ -78,8 +93,8 @@ class PerSegmentSingleValuedFaceting {
int threads = nThreads <= 0 ? Integer.MAX_VALUE : nThreads;
- for (int i=0; i<leafReaders.length; i++) {
- final SegFacet segFacet = new SegFacet(leafReaders[i], offsets[i]);
+ for (int i=0; i<leaves.length; i++) {
+ final SegFacet segFacet = new SegFacet(leaves[i]);
Callable<SegFacet> task = new Callable<SegFacet>() {
public SegFacet call() throws Exception {
@@ -101,7 +116,7 @@ class PerSegmentSingleValuedFaceting {
// now merge the per-segment results
PriorityQueue<SegFacet> queue = new PriorityQueue<SegFacet>() {
{
- initialize(leafReaders.length);
+ initialize(leaves.length);
}
@Override
protected boolean lessThan(SegFacet a, SegFacet b) {
@@ -112,7 +127,7 @@ class PerSegmentSingleValuedFaceting {
boolean hasMissingCount=false;
int missingCount=0;
- for (int i=0; i<leafReaders.length; i++) {
+ for (int i=0; i<leaves.length; i++) {
SegFacet seg = null;
try {
@@ -189,7 +204,7 @@ class PerSegmentSingleValuedFaceting {
if (stop) break;
}
- NamedList res = collector.getFacetCounts();
+ NamedList<Integer> res = collector.getFacetCounts();
// convert labels to readable form
FieldType ft = searcher.getSchema().getFieldType(fieldName);
@@ -209,12 +224,9 @@ class PerSegmentSingleValuedFaceting {
}
class SegFacet {
- SolrIndexReader reader;
- int readerOffset;
-
- SegFacet(SolrIndexReader reader, int readerOffset) {
- this.reader = reader;
- this.readerOffset = readerOffset;
+ AtomicReaderContext context;
+ SegFacet(AtomicReaderContext context) {
+ this.context = context;
}
FieldCache.DocTermsIndex si;
@@ -228,7 +240,7 @@ class PerSegmentSingleValuedFaceting {
BytesRef tempBR = new BytesRef();
void countTerms() throws IOException {
- si = FieldCache.DEFAULT.getTermsIndex(reader, fieldName);
+ si = FieldCache.DEFAULT.getTermsIndex(context.reader, fieldName);
// SolrCore.log.info("reader= " + reader + " FC=" + System.identityHashCode(si));
if (prefix!=null) {
@@ -250,7 +262,7 @@ class PerSegmentSingleValuedFaceting {
// count collection array only needs to be as big as the number of terms we are
// going to collect counts for.
final int[] counts = this.counts = new int[nTerms];
- DocIdSet idSet = baseSet.getDocIdSet(reader);
+ DocIdSet idSet = baseSet.getDocIdSet(context);
DocIdSetIterator iter = idSet.iterator();
@@ -324,7 +336,7 @@ class PerSegmentSingleValuedFaceting {
abstract class FacetCollector {
/*** return true to stop collection */
public abstract boolean collect(BytesRef term, int count);
- public abstract NamedList getFacetCounts();
+ public abstract NamedList<Integer> getFacetCounts();
}
@@ -358,8 +370,8 @@ class CountSortedFacetCollector extends
}
@Override
- public NamedList getFacetCounts() {
- NamedList res = new NamedList();
+ public NamedList<Integer> getFacetCounts() {
+ NamedList<Integer> res = new NamedList<Integer>();
int off=offset;
int lim=limit>=0 ? limit : Integer.MAX_VALUE;
// now select the right page from the results
@@ -377,7 +389,7 @@ class IndexSortedFacetCollector extends
int offset;
int limit;
final int mincount;
- final NamedList res = new NamedList();
+ final NamedList<Integer> res = new NamedList<Integer>();
public IndexSortedFacetCollector(int offset, int limit, int mincount) {
@@ -406,7 +418,7 @@ class IndexSortedFacetCollector extends
}
@Override
- public NamedList getFacetCounts() {
+ public NamedList<Integer> getFacetCounts() {
return res;
}
}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/request/ServletSolrParams.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/request/ServletSolrParams.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/request/ServletSolrParams.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/request/ServletSolrParams.java Wed Feb 9 09:35:27 2011
@@ -29,6 +29,7 @@ public class ServletSolrParams extends M
super(req.getParameterMap());
}
+ @Override
public String get(String name) {
String[] arr = map.get(name);
if (arr==null) return null;
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/request/SimpleFacets.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/request/SimpleFacets.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/request/SimpleFacets.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/request/SimpleFacets.java Wed Feb 9 09:35:27 2011
@@ -70,7 +70,7 @@ public class SimpleFacets {
protected SolrQueryRequest req;
protected ResponseBuilder rb;
- protected SimpleOrderedMap facetResponse;
+ protected SimpleOrderedMap<Object> facetResponse;
// per-facet values
SolrParams localParams; // localParams on this particular facet command
@@ -147,14 +147,17 @@ public class SimpleFacets {
List<Query> qlist = new ArrayList<Query>();
// add the base query
- qlist.add(rb.getQuery());
+ if (!excludeSet.containsKey(rb.getQuery())) {
+ qlist.add(rb.getQuery());
+ }
// add the filters
- for (Query q : rb.getFilters()) {
- if (!excludeSet.containsKey(q)) {
- qlist.add(q);
+ if (rb.getFilters() != null) {
+ for (Query q : rb.getFilters()) {
+ if (!excludeSet.containsKey(q)) {
+ qlist.add(q);
+ }
}
-
}
// get the new base docset for this facet
@@ -175,13 +178,13 @@ public class SimpleFacets {
* @see FacetParams#FACET
* @return a NamedList of Facet Count info or null
*/
- public NamedList getFacetCounts() {
+ public NamedList<Object> getFacetCounts() {
// if someone called this method, benefit of the doubt: assume true
if (!params.getBool(FacetParams.FACET,true))
return null;
- facetResponse = new SimpleOrderedMap();
+ facetResponse = new SimpleOrderedMap<Object>();
try {
facetResponse.add("facet_queries", getFacetQueryCounts());
facetResponse.add("facet_fields", getFacetFieldCounts());
@@ -196,9 +199,11 @@ public class SimpleFacets {
}
public void addException(String msg, Exception e) {
- List exceptions = (List)facetResponse.get("exception");
+ @SuppressWarnings("unchecked")
+ List<String> exceptions = (List<String>)facetResponse.get("exception");
+
if (exceptions == null) {
- exceptions = new ArrayList();
+ exceptions = new ArrayList<String>();
facetResponse.add("exception", exceptions);
}
@@ -212,9 +217,9 @@ public class SimpleFacets {
*
* @see FacetParams#FACET_QUERY
*/
- public NamedList getFacetQueryCounts() throws IOException,ParseException {
+ public NamedList<Integer> getFacetQueryCounts() throws IOException,ParseException {
- NamedList res = new SimpleOrderedMap();
+ NamedList<Integer> res = new SimpleOrderedMap<Integer>();
/* Ignore CommonParams.DF - could have init param facet.query assuming
* the schema default with query param DF intented to only affect Q.
@@ -246,10 +251,10 @@ public class SimpleFacets {
}
- public NamedList getTermCounts(String field) throws IOException {
+ public NamedList<Integer> getTermCounts(String field) throws IOException {
int offset = params.getFieldInt(field, FacetParams.FACET_OFFSET, 0);
int limit = params.getFieldInt(field, FacetParams.FACET_LIMIT, 100);
- if (limit == 0) return new NamedList();
+ if (limit == 0) return new NamedList<Integer>();
Integer mincount = params.getFieldInt(field, FacetParams.FACET_MINCOUNT);
if (mincount==null) {
Boolean zeros = params.getFieldBool(field, FacetParams.FACET_ZEROS);
@@ -263,7 +268,7 @@ public class SimpleFacets {
String prefix = params.getFieldParam(field,FacetParams.FACET_PREFIX);
- NamedList counts;
+ NamedList<Integer> counts;
SchemaField sf = searcher.getSchema().getField(field);
FieldType ft = sf.getType();
@@ -335,10 +340,10 @@ public class SimpleFacets {
* @see #getFieldMissingCount
* @see #getFacetTermEnumCounts
*/
- public NamedList getFacetFieldCounts()
+ public NamedList<Object> getFacetFieldCounts()
throws IOException, ParseException {
- NamedList res = new SimpleOrderedMap();
+ NamedList<Object> res = new SimpleOrderedMap<Object>();
String[] facetFs = params.getParams(FacetParams.FACET_FIELD);
if (null != facetFs) {
for (String f : facetFs) {
@@ -361,10 +366,10 @@ public class SimpleFacets {
}
- private NamedList getListedTermCounts(String field, String termList) throws IOException {
+ private NamedList<Integer> getListedTermCounts(String field, String termList) throws IOException {
FieldType ft = searcher.getSchema().getFieldType(field);
List<String> terms = StrUtils.splitSmart(termList, ",", true);
- NamedList res = new NamedList();
+ NamedList<Integer> res = new NamedList<Integer>();
Term t = new Term(field);
for (String term : terms) {
String internal = ft.toInternal(term);
@@ -394,7 +399,7 @@ public class SimpleFacets {
* Use the Lucene FieldCache to get counts for each unique field value in <code>docs</code>.
* The field must have at most one indexed token per document.
*/
- public static NamedList getFieldCacheCounts(SolrIndexSearcher searcher, DocSet docs, String fieldName, int offset, int limit, int mincount, boolean missing, String sort, String prefix) throws IOException {
+ public static NamedList<Integer> getFieldCacheCounts(SolrIndexSearcher searcher, DocSet docs, String fieldName, int offset, int limit, int mincount, boolean missing, String sort, String prefix) throws IOException {
// TODO: If the number of terms is high compared to docs.size(), and zeros==false,
// we should use an alternate strategy to avoid
// 1) creating another huge int[] for the counts
@@ -409,9 +414,9 @@ public class SimpleFacets {
// trying to pass all the various params around.
FieldType ft = searcher.getSchema().getFieldType(fieldName);
- NamedList res = new NamedList();
+ NamedList<Integer> res = new NamedList<Integer>();
- FieldCache.DocTermsIndex si = FieldCache.DEFAULT.getTermsIndex(searcher.getReader(), fieldName);
+ FieldCache.DocTermsIndex si = FieldCache.DEFAULT.getTermsIndex(searcher.getIndexReader(), fieldName);
final BytesRef prefixRef;
if (prefix == null) {
@@ -589,7 +594,7 @@ public class SimpleFacets {
* @see FacetParams#FACET_ZEROS
* @see FacetParams#FACET_MISSING
*/
- public NamedList getFacetTermEnumCounts(SolrIndexSearcher searcher, DocSet docs, String field, int offset, int limit, int mincount, boolean missing, String sort, String prefix)
+ public NamedList<Integer> getFacetTermEnumCounts(SolrIndexSearcher searcher, DocSet docs, String field, int offset, int limit, int mincount, boolean missing, String sort, String prefix)
throws IOException {
/* :TODO: potential optimization...
@@ -609,13 +614,13 @@ public class SimpleFacets {
IndexSchema schema = searcher.getSchema();
- IndexReader r = searcher.getReader();
+ IndexReader r = searcher.getIndexReader();
FieldType ft = schema.getFieldType(field);
boolean sortByCount = sort.equals("count") || sort.equals("true");
final int maxsize = limit>=0 ? offset+limit : Integer.MAX_VALUE-1;
final BoundedTreeSet<CountPair<BytesRef,Integer>> queue = sortByCount ? new BoundedTreeSet<CountPair<BytesRef,Integer>>(maxsize) : null;
- final NamedList res = new NamedList();
+ final NamedList<Integer> res = new NamedList<Integer>();
int min=mincount-1; // the smallest value in the top 'N' values
int off=offset;
@@ -776,10 +781,10 @@ public class SimpleFacets {
* @see FacetParams#FACET_DATE
*/
- public NamedList getFacetDateCounts()
+ public NamedList<Object> getFacetDateCounts()
throws IOException, ParseException {
- final NamedList resOuter = new SimpleOrderedMap();
+ final NamedList<Object> resOuter = new SimpleOrderedMap<Object>();
final String[] fields = params.getParams(FacetParams.FACET_DATE);
if (null == fields || 0 == fields.length) return resOuter;
@@ -797,7 +802,7 @@ public class SimpleFacets {
return resOuter;
}
- public void getFacetDateCounts(String dateFacet, NamedList resOuter)
+ public void getFacetDateCounts(String dateFacet, NamedList<Object> resOuter)
throws IOException, ParseException {
final IndexSchema schema = searcher.getSchema();
@@ -806,7 +811,7 @@ public class SimpleFacets {
String f = facetValue;
- final NamedList resInner = new SimpleOrderedMap();
+ final NamedList<Object> resInner = new SimpleOrderedMap<Object>();
resOuter.add(key, resInner);
final SchemaField sf = schema.getField(f);
if (! (sf.getType() instanceof DateField)) {
@@ -948,8 +953,8 @@ public class SimpleFacets {
* @see FacetParams#FACET_RANGE
*/
- public NamedList getFacetRangeCounts() {
- final NamedList resOuter = new SimpleOrderedMap();
+ public NamedList<Object> getFacetRangeCounts() {
+ final NamedList<Object> resOuter = new SimpleOrderedMap<Object>();
final String[] fields = params.getParams(FacetParams.FACET_RANGE);
if (null == fields || 0 == fields.length) return resOuter;
@@ -967,7 +972,7 @@ public class SimpleFacets {
return resOuter;
}
- void getFacetRangeCounts(String facetRange, NamedList resOuter)
+ void getFacetRangeCounts(String facetRange, NamedList<Object> resOuter)
throws IOException, ParseException {
final IndexSchema schema = searcher.getSchema();
@@ -978,7 +983,7 @@ public class SimpleFacets {
final SchemaField sf = schema.getField(f);
final FieldType ft = sf.getType();
- RangeEndpointCalculator calc = null;
+ RangeEndpointCalculator<?> calc = null;
if (ft instanceof TrieField) {
final TrieField trie = (TrieField)ft;
@@ -1025,8 +1030,8 @@ public class SimpleFacets {
final RangeEndpointCalculator<T> calc) throws IOException {
final String f = sf.getName();
- final NamedList res = new SimpleOrderedMap();
- final NamedList counts = new SimpleOrderedMap();
+ final NamedList<Object> res = new SimpleOrderedMap<Object>();
+ final NamedList<Integer> counts = new NamedList<Integer>();
res.add("counts", counts);
final T start = calc.getValue(required.getFieldParam(f,FacetParams.FACET_RANGE_START));
@@ -1172,12 +1177,15 @@ public class SimpleFacets {
}
public K key;
public V val;
+ @Override
public int hashCode() {
return key.hashCode() ^ val.hashCode();
}
+ @Override
public boolean equals(Object o) {
- return (o instanceof CountPair)
- && (0 == this.compareTo((CountPair<K,V>) o));
+ if (! (o instanceof CountPair)) return false;
+ CountPair<?,?> that = (CountPair<?,?>) o;
+ return (this.key.equals(that.key) && this.val.equals(that.val));
}
public int compareTo(CountPair<K,V> o) {
int vc = o.val.compareTo(val);
@@ -1284,9 +1292,11 @@ public class SimpleFacets {
extends RangeEndpointCalculator<Float> {
public FloatRangeEndpointCalculator(final SchemaField f) { super(f); }
+ @Override
protected Float parseVal(String rawval) {
return Float.valueOf(rawval);
}
+ @Override
public Float parseAndAddGap(Float value, String gap) {
return new Float(value.floatValue() + Float.valueOf(gap).floatValue());
}
@@ -1295,9 +1305,11 @@ public class SimpleFacets {
extends RangeEndpointCalculator<Double> {
public DoubleRangeEndpointCalculator(final SchemaField f) { super(f); }
+ @Override
protected Double parseVal(String rawval) {
return Double.valueOf(rawval);
}
+ @Override
public Double parseAndAddGap(Double value, String gap) {
return new Double(value.floatValue() + Double.valueOf(gap).floatValue());
}
@@ -1306,9 +1318,11 @@ public class SimpleFacets {
extends RangeEndpointCalculator<Integer> {
public IntegerRangeEndpointCalculator(final SchemaField f) { super(f); }
+ @Override
protected Integer parseVal(String rawval) {
return Integer.valueOf(rawval);
}
+ @Override
public Integer parseAndAddGap(Integer value, String gap) {
return new Integer(value.intValue() + Integer.valueOf(gap).intValue());
}
@@ -1317,9 +1331,11 @@ public class SimpleFacets {
extends RangeEndpointCalculator<Long> {
public LongRangeEndpointCalculator(final SchemaField f) { super(f); }
+ @Override
protected Long parseVal(String rawval) {
return Long.valueOf(rawval);
}
+ @Override
public Long parseAndAddGap(Long value, String gap) {
return new Long(value.intValue() + Long.valueOf(gap).intValue());
}
@@ -1336,15 +1352,19 @@ public class SimpleFacets {
("SchemaField must use filed type extending DateField");
}
}
+ @Override
public String formatValue(Date val) {
return ((DateField)field.getType()).toExternal(val);
}
+ @Override
protected Date parseVal(String rawval) {
return ((DateField)field.getType()).parseMath(now, rawval);
}
+ @Override
protected Object parseGap(final String rawval) {
return rawval;
}
+ @Override
public Date parseAndAddGap(Date value, String gap) throws java.text.ParseException {
final DateMathParser dmp = new DateMathParser(DateField.UTC, Locale.US);
dmp.setNow(value);
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/request/SolrQueryRequestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/request/SolrQueryRequestBase.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/request/SolrQueryRequestBase.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/request/SolrQueryRequestBase.java Wed Feb 9 09:35:27 2011
@@ -127,6 +127,7 @@ public abstract class SolrQueryRequestBa
return origParams.toString();
}
+ @Override
public String toString() {
return this.getClass().getSimpleName() + '{' + params + '}';
}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/request/UnInvertedField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/request/UnInvertedField.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/request/UnInvertedField.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/request/UnInvertedField.java Wed Feb 9 09:35:27 2011
@@ -192,7 +192,7 @@ public class UnInvertedField {
private void uninvert(SolrIndexSearcher searcher) throws IOException {
long startTime = System.currentTimeMillis();
- IndexReader reader = searcher.getReader();
+ IndexReader reader = searcher.getIndexReader();
int maxDoc = reader.maxDoc();
int[] index = new int[maxDoc]; // immediate term numbers, or the index into the byte[] representing the last number
@@ -457,12 +457,12 @@ public class UnInvertedField {
- public NamedList getCounts(SolrIndexSearcher searcher, DocSet baseDocs, int offset, int limit, Integer mincount, boolean missing, String sort, String prefix) throws IOException {
+ public NamedList<Integer> getCounts(SolrIndexSearcher searcher, DocSet baseDocs, int offset, int limit, Integer mincount, boolean missing, String sort, String prefix) throws IOException {
use.incrementAndGet();
FieldType ft = searcher.getSchema().getFieldType(field);
- NamedList res = new NamedList(); // order is important
+ NamedList<Integer> res = new NamedList<Integer>(); // order is important
DocSet docs = baseDocs;
int baseSize = docs.size();
@@ -481,7 +481,7 @@ public class UnInvertedField {
int startTerm = 0;
int endTerm = numTermsInField; // one past the end
- NumberedTermsEnum te = ti.getEnumerator(searcher.getReader());
+ NumberedTermsEnum te = ti.getEnumerator(searcher.getIndexReader());
if (prefix != null && prefix.length() > 0) {
BytesRef prefixBr = new BytesRef(prefix);
te.skipTo(prefixBr);
@@ -719,7 +719,7 @@ public class UnInvertedField {
for (String f : facet) {
FieldType facet_ft = searcher.getSchema().getFieldType(f);
try {
- si = FieldCache.DEFAULT.getTermsIndex(searcher.getReader(), f);
+ si = FieldCache.DEFAULT.getTermsIndex(searcher.getIndexReader(), f);
}
catch (IOException e) {
throw new RuntimeException("failed to open field cache for: " + f, e);
@@ -731,7 +731,7 @@ public class UnInvertedField {
final int[] index = this.index;
final int[] counts = new int[numTermsInField];//keep track of the number of times we see each word in the field for all the documents in the docset
- NumberedTermsEnum te = ti.getEnumerator(searcher.getReader());
+ NumberedTermsEnum te = ti.getEnumerator(searcher.getIndexReader());
boolean doNegative = false;
@@ -882,6 +882,7 @@ public class UnInvertedField {
return te.skipTo(termNum);
}
+ @Override
public String toString() {
return "{field=" + field
+ ",memSize="+memSize()
@@ -900,15 +901,15 @@ public class UnInvertedField {
//////////////////////////// caching /////////////////////////////
//////////////////////////////////////////////////////////////////
public static UnInvertedField getUnInvertedField(String field, SolrIndexSearcher searcher) throws IOException {
- SolrCache cache = searcher.getFieldValueCache();
+ SolrCache<String,UnInvertedField> cache = searcher.getFieldValueCache();
if (cache == null) {
return new UnInvertedField(field, searcher);
}
- UnInvertedField uif = (UnInvertedField)cache.get(field);
+ UnInvertedField uif = cache.get(field);
if (uif == null) {
synchronized (cache) {
- uif = (UnInvertedField)cache.get(field);
+ uif = cache.get(field);
if (uif == null) {
uif = new UnInvertedField(field, searcher);
cache.put(field, uif);
@@ -918,7 +919,6 @@ public class UnInvertedField {
return uif;
}
-
}
@@ -997,13 +997,13 @@ class NumberedTermsEnum extends TermsEnu
}
@Override
- public int docFreq() {
+ public int docFreq() throws IOException {
return tenum.docFreq();
}
@Override
- public void cacheCurrentTerm() {
- throw new UnsupportedOperationException();
+ public long totalTermFreq() throws IOException {
+ return tenum.totalTermFreq();
}
public BytesRef skipTo(BytesRef target) throws IOException {
@@ -1159,6 +1159,7 @@ class TermIndex {
ArrayList<BytesRef> lst;
PagedBytes bytes;
+ @Override
protected BytesRef setTerm() throws IOException {
BytesRef br = super.setTerm();
if (br != null && (pos & intervalMask)==0) {
@@ -1174,10 +1175,12 @@ class TermIndex {
return br;
}
+ @Override
public BytesRef skipTo(int termNumber) throws IOException {
throw new UnsupportedOperationException();
}
+ @Override
public void close() throws IOException {
nTerms=pos;
super.close();