lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rodrigo Vega (JIRA)" <j...@apache.org>
Subject [jira] [Created] (LUCENE-4461) Multiple FacetRequest with the same path creates inconsistent results
Date Fri, 05 Oct 2012 15:22:04 GMT
Rodrigo Vega created LUCENE-4461:
------------------------------------

             Summary: Multiple FacetRequest with the same path creates inconsistent results
                 Key: LUCENE-4461
                 URL: https://issues.apache.org/jira/browse/LUCENE-4461
             Project: Lucene - Core
          Issue Type: Bug
          Components: modules/facet
    Affects Versions: 3.6
            Reporter: Rodrigo Vega


Multiple FacetRequest are getting merged into one creating wrong results in this case:

FacetSearchParams facetSearchParams = new FacetSearchParams();
		facetSearchParams.addFacetRequest(new CountFacetRequest(new CategoryPath("author"), 10));
		facetSearchParams.addFacetRequest(new CountFacetRequest(new CategoryPath("author"), 10));

Problem can be fixed defining hashcode and equals in certain way that Lucene recognize we
are talking about different requests.


A Very simple test case:
========================

public class LuceneFacetTest {

	@Test
	public void testDuplicateFacetRequest() throws Exception {
		IndexWriter writer = new IndexWriter(new RAMDirectory(), new IndexWriterConfig(Version.LUCENE_36,
new StandardAnalyzer(Version.LUCENE_36)));
		Directory taxoDir = new RAMDirectory();
		TaxonomyWriter taxoWriter = new DirectoryTaxonomyWriter(taxoDir, OpenMode.CREATE);

		Document doc = new Document();
		doc.add(new Field("title", "simple text title", Store.YES, org.apache.lucene.document.Field.Index.ANALYZED));
		List<CategoryPath> categories = new ArrayList<CategoryPath>();
		categories.add(new CategoryPath("author", "Mark Twain"));
		categories.add(new CategoryPath("year", "2010"));
		CategoryDocumentBuilder categoryDocBuilder = new CategoryDocumentBuilder(taxoWriter);
		categoryDocBuilder.setCategoryPaths(categories);
		categoryDocBuilder.build(doc);
		writer.addDocument(doc);
		writer.commit();
		taxoWriter.commit();

		IndexReader indexReader = IndexReader.open(writer, true);
		IndexSearcher searcher = new IndexSearcher(indexReader);
		TaxonomyReader taxoReader = new DirectoryTaxonomyReader(taxoDir);
		Query q = new TermQuery(new Term("title", "text"));

		TopScoreDocCollector tdc = TopScoreDocCollector.create(10, true);

		FacetSearchParams facetSearchParams = new FacetSearchParams();
		facetSearchParams.addFacetRequest(new CountFacetRequest(new CategoryPath("author"), 10));
		facetSearchParams.addFacetRequest(new CountFacetRequest(new CategoryPath("author"), 10));

		FacetsCollector facetsCollector = new FacetsCollector(facetSearchParams, indexReader, taxoReader);
		searcher.search(q, MultiCollector.wrap(tdc, facetsCollector));
		List<FacetResult> res = facetsCollector.getFacetResults();

		Assert.assertEquals("Only Mark Twain should be returned as result", 1, res.get(0).getNumValidDescendants());
		Assert.assertEquals("Only Mark Twain should be returned as result", 1, res.get(1).getNumValidDescendants());
	}
}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org


Mime
View raw message