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.