Return-Path: Delivered-To: apmail-lucene-solr-dev-archive@minotaur.apache.org Received: (qmail 72885 invoked from network); 22 Dec 2009 05:39:03 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 22 Dec 2009 05:39:03 -0000 Received: (qmail 88050 invoked by uid 500); 22 Dec 2009 05:38:56 -0000 Delivered-To: apmail-lucene-solr-dev-archive@lucene.apache.org Received: (qmail 88010 invoked by uid 500); 22 Dec 2009 05:38:55 -0000 Mailing-List: contact solr-dev-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: solr-dev@lucene.apache.org Delivered-To: mailing list solr-dev@lucene.apache.org Received: (qmail 87997 invoked by uid 99); 22 Dec 2009 05:38:54 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 22 Dec 2009 05:38:54 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.140] (HELO brutus.apache.org) (140.211.11.140) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 22 Dec 2009 05:38:41 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 5E4FE29A0012 for ; Mon, 21 Dec 2009 21:38:19 -0800 (PST) Message-ID: <1709664230.1261460299384.JavaMail.jira@brutus> Date: Tue, 22 Dec 2009 05:38:19 +0000 (UTC) From: "Noble Paul (JIRA)" To: solr-dev@lucene.apache.org Subject: [jira] Updated: (SOLR-236) Field collapsing In-Reply-To: <19014374.1178921656142.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/SOLR-236?page=3Dcom.atlassian.= jira.plugin.system.issuetabpanels:all-tabpanel ] Noble Paul updated SOLR-236: ---------------------------- Comment: was deleted (was: hi,experts, thanks for the great work! now i download solr1.4 from http://apache.freelamp.com/lucene/solr/1.4.0/a= pache-solr-1.4.0.zip and i path this patch: SOLR-236.patch 2009-12-18 10:16 AM Shalin Shekhar= Mangar=20 like this: G:\doc\apache-solr-1.4.0>patch.exe -p0 < SOLR-236.patch it will show some error,and this patch( SOLR-236.patch 2009-12-18 10:16 AM = )don't support solr1.4 ? and the result is: patching file src/test/test-files/solr/conf/solrconfig-fieldcollapse.xml patching file src/test/test-files/solr/conf/schema-fieldcollapse.xml patching file src/test/test-files/solr/conf/solrconfig.xml patching file src/test/test-files/fieldcollapse/testResponse.xml can't find file to patch at input line 787 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- | |Property changes on: src/test/test-files/fieldcollapse/testResponse.xml |___________________________________________________________________ |Added: svn:keywords | + Date Author Id Revision HeadURL |Added: svn:eol-style | + native | |Index: src/test/org/apache/solr/BaseDistributedSearchTestCase.java |=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D |--- src/test/org/apache/solr/BaseDistributedSearchTestCase.java(revision 8= 91214) |+++ src/test/org/apache/solr/BaseDistributedSearchTestCase.java(working co= py) -------------------------- File to patch: SOLR-236.patch S: No such file or directory Skip this patch? [y] y Skipping patch. 2 out of 2 hunks ignored patching file src/test/org/apache/solr/search/fieldcollapse/FieldCollapsing= IntegrationTest.java patching file src/test/org/apache/solr/search/fieldcollapse/DistributedFiel= dCollapsingIntegrationTest.java patching file src/test/org/apache/solr/search/fieldcollapse/NonAdjacentDocu= mentCollapserTest.java patching file src/test/org/apache/solr/search/fieldcollapse/AdjacentCollaps= erTest.java patching file src/test/org/apache/solr/handler/component/CollapseComponentT= est.java patching file src/test/org/apache/solr/client/solrj/response/FieldCollapseR= esponseTest.java patching file src/java/org/apache/solr/search/DocSetAwareCollector.java patching file src/java/org/apache/solr/search/fieldcollapse/CollapseGroup.j= ava patching file src/java/org/apache/solr/search/fieldcollapse/DocumentCollaps= eResult.java patching file src/java/org/apache/solr/search/fieldcollapse/DocumentCollaps= er.java patching file src/java/org/apache/solr/search/fieldcollapse/collector/Colla= pseCollectorFactory.java patching file src/java/org/apache/solr/search/fieldcollapse/collector/Docum= entGroupCountCollapseCollectorFactory.java patching file src/java/org/apache/solr/search/fieldcollapse/collector/aggre= gate/AverageFunction.java patching file src/java/org/apache/solr/search/fieldcollapse/collector/aggre= gate/MinFunction.java patching file src/java/org/apache/solr/search/fieldcollapse/collector/aggre= gate/SumFunction.java patching file src/java/org/apache/solr/search/fieldcollapse/collector/aggre= gate/MaxFunction.java patching file src/java/org/apache/solr/search/fieldcollapse/collector/aggre= gate/AggregateFunction.java patching file src/java/org/apache/solr/search/fieldcollapse/collector/Colla= pseContext.java patching file src/java/org/apache/solr/search/fieldcollapse/collector/Docum= entFieldsCollapseCollectorFactory.java patching file src/java/org/apache/solr/search/fieldcollapse/collector/Aggre= gateCollapseCollectorFactory.java patching file src/java/org/apache/solr/search/fieldcollapse/collector/Colla= pseCollector.java patching file src/java/org/apache/solr/search/fieldcollapse/collector/Field= ValueCountCollapseCollectorFactory.java patching file src/java/org/apache/solr/search/fieldcollapse/collector/Abstr= actCollapseCollector.java patching file src/java/org/apache/solr/search/fieldcollapse/AbstractDocumen= tCollapser.java patching file src/java/org/apache/solr/search/fieldcollapse/NonAdjacentDocu= mentCollapser.java patching file src/java/org/apache/solr/search/fieldcollapse/AdjacentDocumen= tCollapser.java patching file src/java/org/apache/solr/search/fieldcollapse/util/Counter.ja= va patching file src/java/org/apache/solr/search/SolrIndexSearcher.java patching file src/java/org/apache/solr/search/DocSetHitCollector.java patching file src/java/org/apache/solr/handler/component/CollapseComponent.= java patching file src/java/org/apache/solr/handler/component/QueryComponent.jav= a Hunk #5 succeeded at 521 with fuzz 2. Hunk #6 succeeded at 562 (offset -5 lines). patching file src/java/org/apache/solr/util/DocSetScoreCollector.java patching file src/common/org/apache/solr/common/params/CollapseParams.java patching file src/solrj/org/apache/solr/client/solrj/SolrQuery.java Hunk #1 FAILED at 17. Hunk #2 FAILED at 50. Hunk #3 FAILED at 76. Hunk #4 FAILED at 148. Hunk #5 FAILED at 197. Hunk #6 succeeded at 510 (offset -155 lines). Hunk #7 succeeded at 566 (offset -155 lines). 5 out of 7 hunks FAILED -- saving rejects to file src/solrj/org/apache/solr= /client/solrj/SolrQuery.java.rej patching file src/solrj/org/apache/solr/client/solrj/response/QueryResponse= .java Hunk #1 FAILED at 47. Hunk #2 FAILED at 63. Hunk #3 succeeded at 122 with fuzz 2 (offset -8 lines). Hunk #4 succeeded at 320 with fuzz 2 (offset 17 lines). 2 out of 4 hunks FAILED -- saving rejects to file src/solrj/org/apache/solr= /client/solrj/response/QueryResponse.java.rej patching file src/solrj/org/apache/solr/client/solrj/response/FieldCollapse= Response.java and in src/solrj/org/apache/solr/client/solrj/SolrQuery.java.rej=20 *************** *** 17,28 **** =20 package org.apache.solr.client.solrj; =20 - import org.apache.solr.common.params.CommonParams; - import org.apache.solr.common.params.FacetParams; - import org.apache.solr.common.params.HighlightParams; - import org.apache.solr.common.params.ModifiableSolrParams; - import org.apache.solr.common.params.StatsParams; - import org.apache.solr.common.params.TermsParams; =20 import java.util.regex.Pattern; =20 --- 17,23 ---- =20 package org.apache.solr.client.solrj; =20 + import org.apache.solr.common.params.*; =20 import java.util.regex.Pattern; =20 *************** *** 55,62 **** this.set(CommonParams.Q, q); } =20 - /** enable/disable terms. =20 - *=20 * @param b flag to indicate terms should be enabled.
if b=3D=3D= false, removes all other terms parameters * @return Current reference (this) */ --- 50,57 ---- this.set(CommonParams.Q, q); } =20 + /** enable/disable terms. + * * @param b flag to indicate terms should be enabled.
if b=3D=3D= false, removes all other terms parameters * @return Current reference (this) */ *************** *** 81,150 **** } return this; } - =20 public boolean getTerms() { return this.getBool(TermsParams.TERMS, false); } - =20 public SolrQuery addTermsField(String field) { this.add(TermsParams.TERMS_FIELD, field); return this; } - =20 public String[] getTermsFields() { return this.getParams(TermsParams.TERMS_FIELD); } - =20 public SolrQuery setTermsLower(String lower) { this.set(TermsParams.TERMS_LOWER, lower); return this; } - =20 public String getTermsLower() { return this.get(TermsParams.TERMS_LOWER, ""); } - =20 public SolrQuery setTermsUpper(String upper) { this.set(TermsParams.TERMS_UPPER, upper); return this; } - =20 public String getTermsUpper() { return this.get(TermsParams.TERMS_UPPER, ""); } - =20 public SolrQuery setTermsUpperInclusive(boolean b) { this.set(TermsParams.TERMS_UPPER_INCLUSIVE, b); return this; } - =20 public boolean getTermsUpperInclusive() { return this.getBool(TermsParams.TERMS_UPPER_INCLUSIVE, false); } - =20 public SolrQuery setTermsLowerInclusive(boolean b) { this.set(TermsParams.TERMS_LOWER_INCLUSIVE, b); return this; } - =20 public boolean getTermsLowerInclusive() { return this.getBool(TermsParams.TERMS_LOWER_INCLUSIVE, true); } - =20 public SolrQuery setTermsLimit(int limit) { this.set(TermsParams.TERMS_LIMIT, limit); return this; } - =20 public int getTermsLimit() { return this.getInt(TermsParams.TERMS_LIMIT, 10); } - =20 public SolrQuery setTermsMinCount(int cnt) { this.set(TermsParams.TERMS_MINCOUNT, cnt); return this; } - =20 public int getTermsMinCount() { return this.getInt(TermsParams.TERMS_MINCOUNT, 1); } --- 76,145 ---- } return this; } +=20 public boolean getTerms() { return this.getBool(TermsParams.TERMS, false); } +=20 public SolrQuery addTermsField(String field) { this.add(TermsParams.TERMS_FIELD, field); return this; } +=20 public String[] getTermsFields() { return this.getParams(TermsParams.TERMS_FIELD); } +=20 public SolrQuery setTermsLower(String lower) { this.set(TermsParams.TERMS_LOWER, lower); return this; } +=20 public String getTermsLower() { return this.get(TermsParams.TERMS_LOWER, ""); } +=20 public SolrQuery setTermsUpper(String upper) { this.set(TermsParams.TERMS_UPPER, upper); return this; } +=20 public String getTermsUpper() { return this.get(TermsParams.TERMS_UPPER, ""); } +=20 public SolrQuery setTermsUpperInclusive(boolean b) { this.set(TermsParams.TERMS_UPPER_INCLUSIVE, b); return this; } +=20 public boolean getTermsUpperInclusive() { return this.getBool(TermsParams.TERMS_UPPER_INCLUSIVE, false); } +=20 public SolrQuery setTermsLowerInclusive(boolean b) { this.set(TermsParams.TERMS_LOWER_INCLUSIVE, b); return this; } +=20 public boolean getTermsLowerInclusive() { return this.getBool(TermsParams.TERMS_LOWER_INCLUSIVE, true); } +=20 public SolrQuery setTermsLimit(int limit) { this.set(TermsParams.TERMS_LIMIT, limit); return this; } +=20 public int getTermsLimit() { return this.getInt(TermsParams.TERMS_LIMIT, 10); } +=20 public SolrQuery setTermsMinCount(int cnt) { this.set(TermsParams.TERMS_MINCOUNT, cnt); return this; } +=20 public int getTermsMinCount() { return this.getInt(TermsParams.TERMS_MINCOUNT, 1); } *************** *** 153,186 **** this.set(TermsParams.TERMS_MAXCOUNT, cnt); return this; } - =20 public int getTermsMaxCount() { return this.getInt(TermsParams.TERMS_MAXCOUNT, -1); } - =20 public SolrQuery setTermsPrefix(String prefix) { this.set(TermsParams.TERMS_PREFIX_STR, prefix); return this; } - =20 public String getTermsPrefix() { return this.get(TermsParams.TERMS_PREFIX_STR, ""); } - =20 public SolrQuery setTermsRaw(boolean b) { this.set(TermsParams.TERMS_RAW, b); return this; } - =20 public boolean getTermsRaw() { return this.getBool(TermsParams.TERMS_RAW, false); } - =20 public SolrQuery setTermsSortString(String type) { this.set(TermsParams.TERMS_SORT, type); return this; } - =20 public String getTermsSortString() { return this.get(TermsParams.TERMS_SORT, TermsParams.TERMS_SORT_COUNT)= ; } --- 148,181 ---- this.set(TermsParams.TERMS_MAXCOUNT, cnt); return this; } +=20 public int getTermsMaxCount() { return this.getInt(TermsParams.TERMS_MAXCOUNT, -1); } +=20 public SolrQuery setTermsPrefix(String prefix) { this.set(TermsParams.TERMS_PREFIX_STR, prefix); return this; } +=20 public String getTermsPrefix() { return this.get(TermsParams.TERMS_PREFIX_STR, ""); } +=20 public SolrQuery setTermsRaw(boolean b) { this.set(TermsParams.TERMS_RAW, b); return this; } +=20 public boolean getTermsRaw() { return this.getBool(TermsParams.TERMS_RAW, false); } +=20 public SolrQuery setTermsSortString(String type) { this.set(TermsParams.TERMS_SORT, type); return this; } +=20 public String getTermsSortString() { return this.get(TermsParams.TERMS_SORT, TermsParams.TERMS_SORT_COUNT)= ; } *************** *** 202,208 **** public String[] getTermsRegexFlags() { return this.getParams(TermsParams.TERMS_REGEXP_FLAG); } - =20 /** Add field(s) for facet computation. *=20 * @param fields Array of field names from the IndexSchema --- 197,203 ---- public String[] getTermsRegexFlags() { return this.getParams(TermsParams.TERMS_REGEXP_FLAG); } +=20 /** Add field(s) for facet computation. *=20 * @param fields Array of field names from the IndexSchema in src/solrj/org/apache/solr/client/solrj/response/QueryResponse.java.rej: *************** *** 47,52 **** private NamedList _spellInfo =3D null; private NamedList _statsInfo =3D null; private NamedList _termsInfo =3D null; =20 // Facet stuff private Map _facetQuery =3D null; --- 47,53 ---- private NamedList _spellInfo =3D null; private NamedList _statsInfo =3D null; private NamedList _termsInfo =3D null; + private NamedList _collapseInfo =3D null; =20 // Facet stuff private Map _facetQuery =3D null; *************** *** 62,68 **** =20 // Terms Response private TermsResponse _termsResponse =3D null; - =20 // Field stats Response private Map _fieldStatsInfo =3D null; =20 --- 63,72 ---- =20 // Terms Response private TermsResponse _termsResponse =3D null; +=20 + // Field collapse response + private FieldCollapseResponse _fieldCollapseResponse =3D null; =20 +=20 // Field stats Response private Map _fieldStatsInfo =3D null; =20 ) > 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 > Assignee: Shalin Shekhar Mangar > Fix For: 1.5 > > Attachments: collapsing-patch-to-1.3.0-dieter.patch, collapsing-p= atch-to-1.3.0-ivan.patch, collapsing-patch-to-1.3.0-ivan_2.patch, collapsin= g-patch-to-1.3.0-ivan_3.patch, field-collapse-3.patch, field-collapse-4-wit= h-solrj.patch, field-collapse-5.patch, field-collapse-5.patch, field-collap= se-5.patch, field-collapse-5.patch, field-collapse-5.patch, field-collapse-= 5.patch, field-collapse-5.patch, field-collapse-5.patch, field-collapse-5.p= atch, field-collapse-5.patch, field-collapse-5.patch, field-collapse-5.patc= h, field-collapse-5.patch, field-collapse-5.patch, field-collapse-5.patch, = field-collapse-solr-236-2.patch, field-collapse-solr-236.patch, field-colla= psing-extended-592129.patch, field_collapsing_1.1.0.patch, field_collapsing= _1.3.patch, field_collapsing_dsteigerwald.diff, field_collapsing_dsteigerwa= ld.diff, field_collapsing_dsteigerwald.diff, quasidistributed.additional.pa= tch, SOLR-236-FieldCollapsing.patch, SOLR-236-FieldCollapsing.patch, SOLR-2= 36-FieldCollapsing.patch, SOLR-236.patch, SOLR-236.patch, SOLR-236.patch, s= olr-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 gi= ven 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 docum= ents from this site" link. See also Duplicate detection." > http://www.fastsearch.com/glossary.aspx?m=3D48&amid=3D299 > 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 c= ollapsing > 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 ;-) --=20 This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.