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 <luc...@mikemccandless.com> 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 <gtholp...@gmail.com> 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: java-user-unsubscr...@lucene.apache.org >> For additional commands, e-mail: java-user-h...@lucene.apache.org >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org > For additional commands, e-mail: java-user-h...@lucene.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org For additional commands, e-mail: java-user-h...@lucene.apache.org