[
https://issues.apache.org/jira/browse/SOLR-236?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Martijn van Groningen updated SOLR-236:
---------------------------------------
Attachment: field-collapse-5.patch
I have created a new patch that has the following changes:
1) Non adajacent collasping with sorting on score also uses the Solr caches
now. So now every field collapse searches are using the Solr caches properly.
This was not the case in my previous versions of the patch. This improvement
will make field collapsing perform better and reduce the query time for regular
searches. The downside was, that in order to make this work I had to modify
some methods in the SolrIndexSearcher.
When sorting on score the non adjacent collapsing algorithm needs the score per
document. The score is collected in a Lucene collector. The previous version of
the patch uses the searcher.search(Query, Filter, Collector) method to collect
the documents (as a DocSet) and scores, but by using this method the Solr
caches were ignored.
The methods that return a DocSet in the SolrIndexSearcher do not offer the
ability the specify your own collector. I changed that so you can specify your
own collector and still benefit from the Solr caches. I did this in a non
intrusive manner, so that nothing changes for existing code that uses the
normal versions of these methods.
{code}
public DocSet getDocSet(Query query) throws IOException {
DocSetCollector collector = new DocSetCollector(maxDoc()>>6, maxDoc());
return getDocSet(query, collector);
}
public DocSet getDocSet(Query query, DocSetAwareCollector collector) throws
IOException {
....
}
DocSet getPositiveDocSet(Query q) throws IOException {
DocSetCollector collector = new DocSetCollector(maxDoc()>>6, maxDoc());
return getPositiveDocSet(q, collector);
}
DocSet getPositiveDocSet(Query q, DocSetAwareCollector collector) throws
IOException {
.....
}
public DocSet getDocSet(List<Query> queries) throws IOException {
DocSetCollector collector = new DocSetCollector(maxDoc()>>6, maxDoc());
return getDocSet(queries, collector);
}
public DocSet getDocSet(List<Query> queries, DocSetAwareCollector collector)
throws IOException {
.......
}
protected DocSet getDocSetNC(Query query, DocSet filter) throws IOException {
DocSetCollector collector = new DocSetCollector(maxDoc()>>6, maxDoc());
return getDocSetNC(query, filter, collector);
}
protected DocSet getDocSetNC(Query query, DocSet filter, DocSetAwareCollector
collector) throws IOException {
.........
}
{code}
I also made a DocSetAwareCollector that both DocSetCollector and
DocSetScoreCollector implement.
2) The collapse.includeCollapsedDocs parameters has been removed. In order to
include the collapsed documents the parameter collapse.includeCollapsedDocs.fl
must be specified. collapse.includeCollapsedDocs.fl=* will include all fields
of the collapsed documents and collapse.includeCollapsedDocs.fl=id,name will
only include the id and name field of the collapsed documents.
> Field collapsing
> ----------------
>
> Key: SOLR-236
> URL: https://issues.apache.org/jira/browse/SOLR-236
> Project: Solr
> Issue Type: New Feature
> Components: search
> Affects Versions: 1.3
> Reporter: Emmanuel Keller
> Fix For: 1.5
>
> Attachments: collapsing-patch-to-1.3.0-dieter.patch,
> collapsing-patch-to-1.3.0-ivan.patch, collapsing-patch-to-1.3.0-ivan_2.patch,
> collapsing-patch-to-1.3.0-ivan_3.patch, field-collapse-3.patch,
> field-collapse-4-with-solrj.patch, field-collapse-5.patch,
> field-collapse-5.patch, field-collapse-5.patch, field-collapse-5.patch,
> field-collapse-5.patch, field-collapse-5.patch,
> field-collapse-solr-236-2.patch, field-collapse-solr-236.patch,
> field-collapsing-extended-592129.patch, field_collapsing_1.1.0.patch,
> field_collapsing_1.3.patch, field_collapsing_dsteigerwald.diff,
> field_collapsing_dsteigerwald.diff, field_collapsing_dsteigerwald.diff,
> SOLR-236-FieldCollapsing.patch, SOLR-236-FieldCollapsing.patch,
> SOLR-236-FieldCollapsing.patch, solr-236.patch, SOLR-236_collapsing.patch,
> SOLR-236_collapsing.patch
>
>
> This patch include a new feature called "Field collapsing".
> "Used in order to collapse a group of results with similar value for a given
> field to a single entry in the result set. Site collapsing is a special case
> of this, where all results for a given web site is collapsed into one or two
> entries in the result set, typically with an associated "more documents from
> this site" link. See also Duplicate detection."
> http://www.fastsearch.com/glossary.aspx?m=48&amid=299
> The implementation add 3 new query parameters (SolrParams):
> "collapse.field" to choose the field used to group results
> "collapse.type" normal (default value) or adjacent
> "collapse.max" to select how many continuous results are allowed before
> collapsing
> TODO (in progress):
> - More documentation (on source code)
> - Test cases
> Two patches:
> - "field_collapsing.patch" for current development version
> - "field_collapsing_1.1.0.patch" for Solr-1.1.0
> P.S.: Feedback and misspelling correction are welcome ;-)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.