allow flags on getDocListAndSet method: SOLR-39

git-svn-id: https://svn.apache.org/repos/asf/incubator/solr/trunk@425567 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Yonik Seeley 2006-07-26 00:34:14 +00:00
parent 0d60aba624
commit ecddbc6337
2 changed files with 52 additions and 7 deletions

View File

@ -38,6 +38,8 @@ New Features
20. Made query parser default operator configurable via schema.xml: 20. Made query parser default operator configurable via schema.xml:
<solrQueryParser defaultOperator="AND|OR"/> <solrQueryParser defaultOperator="AND|OR"/>
The default operator remains "OR". The default operator remains "OR".
21. JAVA API: new version of SolrIndexSearcher.getDocListAndSet() which takes
flags (Greg Ludington via yonik, SOLR-39)
Changes in runtime behavior Changes in runtime behavior
1. classes reorganized into different packages, package names changed to Apache 1. classes reorganized into different packages, package names changed to Apache

View File

@ -1008,23 +1008,61 @@ public class SolrIndexSearcher extends Searcher implements SolrInfoMBean {
* @throws IOException * @throws IOException
*/ */
public DocListAndSet getDocListAndSet(Query query, Query filter, Sort lsort, int offset, int len) throws IOException { public DocListAndSet getDocListAndSet(Query query, Query filter, Sort lsort, int offset, int len) throws IOException {
List<Query> filterList = buildQueryList(filter);
return getDocListAndSet(query, filterList, lsort, offset, len);
}
/**
* Returns documents matching both <code>query</code> and <code>filter</code>
* and sorted by <code>sort</code>. Also returns the compete set of documents
* matching <code>query</code> and <code>filter</code> (regardless of <code>offset</code> and <code>len</code>).
* <p>
* This method is cache aware and may retrieve <code>filter</code> from
* the cache or make an insertion into the cache as a result of this call.
* <p>
* FUTURE: The returned DocList may be retrieved from a cache.
* <p>
* The DocList and DocSet returned should <b>not</b> be modified.
*
* @param query
* @param filter may be null
* @param lsort criteria by which to sort (if null, query relevance is used)
* @param offset offset into the list of documents to return
* @param len maximum number of documents to return
* @param flags user supplied flags for the result set
* @return DocListAndSet meeting the specified criteria, should <b>not</b> be modified by the caller.
* @throws IOException
*/
public DocListAndSet getDocListAndSet(Query query, Query filter, Sort lsort, int offset, int len, int flags) throws IOException {
List<Query> filterList = buildQueryList(filter);
return getDocListAndSet(query, filterList, lsort, offset, len, flags);
}
/**
* A simple utility method for to build a filterList from a query
* @param filter
* @return
*/
private List<Query> buildQueryList(Query filter) {
List<Query> filterList = null; List<Query> filterList = null;
if (filter != null) { if (filter != null) {
filterList = new ArrayList<Query>(2); filterList = new ArrayList<Query>(2);
filterList.add(filter); filterList.add(filter);
} }
return getDocListAndSet(query, filterList, lsort, offset, len); return filterList;
} }
public DocListAndSet getDocListAndSet(Query query, List<Query> filterList, Sort lsort, int offset, int len) throws IOException { public DocListAndSet getDocListAndSet(Query query, List<Query> filterList, Sort lsort, int offset, int len) throws IOException {
DocListAndSet ret = new DocListAndSet(); DocListAndSet ret = new DocListAndSet();
getDocListC(ret,query,filterList,null,lsort,offset,len,GET_DOCSET); getDocListC(ret,query,filterList,null,lsort,offset,len,GET_DOCSET);
return ret; return ret;
} }
public DocListAndSet getDocListAndSet(Query query, List<Query> filterList, Sort lsort, int offset, int len, int flags) throws IOException {
DocListAndSet ret = new DocListAndSet();
getDocListC(ret,query,filterList,null,lsort,offset,len, flags |= GET_DOCSET);
return ret;
}
/** /**
* Returns documents matching both <code>query</code> and <code>filter</code> * Returns documents matching both <code>query</code> and <code>filter</code>
@ -1047,6 +1085,11 @@ public class SolrIndexSearcher extends Searcher implements SolrInfoMBean {
return ret; return ret;
} }
public DocListAndSet getDocListAndSet(Query query, DocSet filter, Sort lsort, int offset, int len, int flags) throws IOException {
DocListAndSet ret = new DocListAndSet();
getDocListC(ret,query,null,filter,lsort,offset,len, flags |= GET_DOCSET);
return ret;
}
protected DocList sortDocSet(DocSet set, Sort sort, int nDocs) throws IOException { protected DocList sortDocSet(DocSet set, Sort sort, int nDocs) throws IOException {
final FieldSortedHitQueue hq = final FieldSortedHitQueue hq =