Field-specific suggestions is a good idea that I had not thought about. Thanks Mike, for the answer, and the suggestion! :)
Goutham Tholpadi https://sites.google.com/site/gtholpadi/ On Tue, Aug 27, 2013 at 9:28 PM, Michael McCandless <[email protected]> wrote: > I think you should just implement your own TermFreqIterator, that > wraps/delegates each of the N fields in turn? > > But, at suggestion time, do you need per-field suggestions? If so, > maybe you should build a separate suggester for each field... > > Mike McCandless > > http://blog.mikemccandless.com > > > On Tue, Aug 27, 2013 at 9:19 AM, Goutham Tholpadi <[email protected]> wrote: >> Lucene Version : 4.4.0 >> >> SITUATION : >> >> I need to suggest terms to the user based on a query prefix typed in a >> textbox. The terms suggested should exist in the index that will be >> searched. I want to suggest terms from more than one field in the >> index. >> >> I am trying to use >> org.apache.lucene.search.suggest.analyzing.AnalyzingSuggester for >> this. >> >> PROBLEM : >> >> Given the path to the index directory, I proceed as follows. >> --------------------------------------------------------------- >> IndexReader ireader = DirectoryReader.open(FSDirectory.open(new >> File(indexPath))); >> List<AtomicReaderContext> readercs = ireader.leaves(); >> for (AtomicReaderContext readerc : readercs) { >> Fields fields = readerc.reader().fields(); >> for (String field : fields) { >> TermsEnum termsEnum = fields.terms(field).iterator(null); >> tfit = new TermFreqIteratorWrapper(termsEnum); // OVERWRITE! >> } >> } >> AnalyzingSuggester suggr = new AnalyzingSuggester(analyzer); >> suggr.build(tfit); >> --------------------------------------------------------------- >> >> In the line marked "OVERWRITE!", I am overwriting the term list from >> one field with the term list from the next field. I want to aggregate >> term lists obtained from different fields. >> >> I could not find a way to instantiate TermFreqIterator without a >> BytesRefIterator. The only way to get a BytesRefIterator seems to be >> in the form of TermsEnum. Neither can be changed (i.e. appended to) >> after instantiation. >> >> How can I aggregate the TermsEnum lists from different fields so that >> I can pass them together in one shot to build()? Alternatively, is >> there a way to add term lists to the suggester after calling build() >> once? >> >> Thanks! >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
