lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Shai Erera <ser...@gmail.com>
Subject Re: Lucene Facets Module 4.8.1
Date Mon, 23 Jun 2014 13:30:55 GMT
Basically, it's not very common to change the indexFieldName. You should do
that in case you e.g. count facets in groups of dimensions, rather than
counting all of them. So for example, if you have 20 dimensions, but you
know you only count d1-d5, d6-d12 and d13-d20, then if you separate them to
3 different indexFieldNames will probably improve performance.

But if you can't make such a decision, it's better to not modify this. When
you initialize a FacetCounts, it counts all the dimensions that are indexed
under that indexFieldName, so if you need the counts of all of them, or the
majority of them, that's ok. But if you know you *always* need the count of
a subset of them, then separating that subset to a different field is
better.

Hope that clarifies.

Shai


On Mon, Jun 23, 2014 at 4:18 PM, Jigar Shah <jigaronline@gmail.com> wrote:

> Thanks this worked for me :)
>
> Is there any advantage of indexing some facets as not providing any
> indexFieldName ?
>
> Thanks
>
>
>
>
> On Mon, Jun 23, 2014 at 12:55 PM, Shai Erera <serera@gmail.com> wrote:
>
> > There is no sample code for doing that but it's quite straightforward -
> if
> > you know you indexed some dimensions under different indexFieldNames,
> > initialize a FacetCounts per such field name, e.g.:
> >
> > FastTaxoFacetCounts defaultCounts = new FastTaxoFacetCounts(...); // for
> > your regular facets
> > FastTaxoFacetCounts cityCounts = new FastTaxoFacetCounts(...); // for
> your
> > CITY facets
> >
> > Something like that...
> >
> > Shai
> >
> >
> > On Mon, Jun 23, 2014 at 9:04 AM, Jigar Shah <jigaronline@gmail.com>
> wrote:
> >
> > > On commenting
> > >
> > > //config.setIndexFieldName("CITY", "city"); at search time, this is
> > before
> > > i do, getTopChildren(...)
> > >
> > > I get following exception.
> > >
> > > Caused by: java.lang.ArrayIndexOutOfBoundsException: 2
> > >     at
> > >
> > >
> >
> org.apache.lucene.facet.taxonomy.FastTaxonomyFacetCounts.count(FastTaxonomyFacetCounts.java:74)
> > > [lucene-facet-4.8.1.jar:4.8.1 1594670 - rmuir - 2014-05-14 19:23:23]
> > >     at
> > >
> > >
> >
> org.apache.lucene.facet.taxonomy.FastTaxonomyFacetCounts.<init>(FastTaxonomyFacetCounts.java:49)
> > > [lucene-facet-4.8.1.jar:4.8.1 1594670 - rmuir - 2014-05-14 19:23:23]
> > >     at
> > >
> > >
> >
> org.apache.lucene.facet.taxonomy.FastTaxonomyFacetCounts.<init>(FastTaxonomyFacetCounts.java:39)
> > > [lucene-facet-4.8.1.jar:4.8.1 1594670 - rmuir - 2014-05-14 19:23:23]
> > >     at
> > >
> > >
> >
> org.apache.lucene.facet.DrillSideways.buildFacetsResult(DrillSideways.java:110)
> > > [lucene-facet-4.8.1.jar:4.8.1 1594670 - rmuir - 2014-05-14 19:23:23]
> > >     at
> > org.apache.lucene.facet.DrillSideways.search(DrillSideways.java:177)
> > > [lucene-facet-4.8.1.jar:4.8.1 1594670 - rmuir - 2014-05-14 19:23:23]
> > >     at
> > org.apache.lucene.facet.DrillSideways.search(DrillSideways.java:203)
> > > [lucene-facet-4.8.1.jar:4.8.1 1594670 - rmuir - 2014-05-14 19:23:23]
> > >
> > > Application level excepitons.....
> > > ...
> > > ...
> > >
> > >
> > >
> > > On Sat, Jun 21, 2014 at 10:56 PM, Michael McCandless <
> > > lucene@mikemccandless.com> wrote:
> > >
> > > > Are you sure it's the same FacetsConfig at search time?  Because the
> > > > exception implies your CITY field didn't have
> > > > config.setIndexFieldName("CITY", "city") called.
> > > >
> > > > Or, can you try commenting out 'config.setIndexFieldName("CITY",
> > > > "city")' at index time and see if the exception still happens?
> > > >
> > > > Mike McCandless
> > > >
> > > > http://blog.mikemccandless.com
> > > >
> > > >
> > > > On Sat, Jun 21, 2014 at 1:08 AM, Jigar Shah <jigaronline@gmail.com>
> > > wrote:
> > > > > Thanks for helping me.
> > > > >
> > > > > Yes, i did couple of things:
> > > > >
> > > > > Below is simple code for indexing which i use.
> > > > >
> > > > > TrackingIndexWriter nrtWriter
> > > > > DirectoryTaxonomyWriter taxoWriter = ...
> > > > > ....
> > > > > FacetsConfig config = new FacetConfig();
> > > > > config.setHierarchical("CITY", true)
> > > > > config.setMultiValued("CITY", true);
> > > > > config.setIndexFieldName("CITY","city") // I kept dimName different
> > > from
> > > > > indexFieldName
> > > > > ....
> > > > > Added indexing searchable fields...
> > > > > ....
> > > > >
> > > > > doc.add( new FacetField("CITY", "India", "Gujarat", "Vadodara" ))
> > > > > doc.add( new FacetField("CITY", "India", "Gujarat", "Ahmedabad" ))
> > > > >
> > > > >  nrtWriter.addDocument(config.build(taxoWriter, doc));
> > > > >
> > > > > Below is code which i use for searching
> > > > >
> > > > > TaxonomyReader taxoReader = new
> DirectoryTaxonomyReader(taxoWriter);
> > > > >
> > > > > Query query = ...
> > > > > IndexSearcher searcher = ...
> > > > > DrillDownQuery ddq = new DrillDownQuery(config, query);
> > > > > DrillSideways ds = new DrillSideways(searcher, config, taxoReader);
> > //
> > > > > Config object is same which i created before
> > > > > DrillSidewaysResult result = ds.search(query, null, null, start +
> > > limit,
> > > > > null, true, true)
> > > > > ...
> > > > > Facets f = result.facets
> > > > > FacetResult fr = f.getTopChildren(5, "CITY") [Exception is
> > geneated]//
> > > > > Didn't perform any drill-down,really, its just original query for
> > first
> > > > > time, but wrapped in DrillDownQuery.
> > > > >
> > > > > ... and below gives me empty collection.
> > > > >
> > > > > List<FacetResult> frs= f.getAllDims(5)
> > > > >
> > > > > I debug source code and found, it internally calls
> > > > >
> > > > > FastTaxonomyFacetCounts(indexFieldName, taxoReader, config) //
> Config
> > > > > object is same which i created before
> > > > >
> > > > > which then calls
> > > > >
> > > > > IntTaxonomyFacets(indexFieldName, taxoReader, config) // Config
> > object
> > > is
> > > > > same which i created before
> > > > >
> > > > > And during this calls the value of indexFieldName is "$facets
> defined
> > > by
> > > > > constant  'public static final String DEFAULT_INDEX_FIELD_NAME =
> > > > "$facets";'
> > > > > in FacetsConfig.
> > > > >
> > > > > My question is if i am using same FacetsConfig while indexing and
> > > > > searching. why its not identifying correct name of field, and goes
> > for
> > > > > "$facets"
> > > > >
> > > > > Please correct me if i understood wrong. or correct way to solve
> > above
> > > > > problem.
> > > > >
> > > > > Many Thanks.
> > > > > Jigar Shah.
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> > > > For additional commands, e-mail: java-user-help@lucene.apache.org
> > > >
> > > >
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message