enter InputIteratorWrapper ;) i.e. new InputIteratorWrapper(tfit ) -----Ursprüngliche Nachricht----- Von: Clemens Wyss DEV [mailto:clemens...@mysign.ch] Gesendet: Donnerstag, 12. Juni 2014 16:01 An: java-user@lucene.apache.org Betreff: AW: Analyzing suggester for many fields
trying to re-build the multi-field TermFreqIterator based on the Goutham's initial code TermFreqIteratorWrapper tfit = null; 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( IndexManager.getIndexingAnalyzer( locale ) ); suggr.build( tfit ); BUT AnalyzingSuggester#build requires an InputIterator and not TermFreqIteratorWrapper/BytesRefIterator. Did this change from 4.4 to 4.7.2? -----Ursprüngliche Nachricht----- Von: Clemens Wyss DEV [mailto:clemens...@mysign.ch] Gesendet: Mittwoch, 11. Juni 2014 12:57 An: java-user@lucene.apache.org Betreff: AW: Analyzing suggester for many fields Unfortunately the link provided by Goutham is no more valid. Anybody still got the code? -----Ursprüngliche Nachricht----- Von: Goutham Tholpadi [mailto:gtholp...@gmail.com] Gesendet: Donnerstag, 29. August 2013 06:21 An: java-user@lucene.apache.org Betreff: Re: Analyzing suggester for many fields I implemented a simple TermFreqIterator for wrapping Iterator-s from multiple fields, or from multiple AtomicReaders under an IndexReader. It seems to work for me. In case anyone else wants to use a quick-fix, here it is: http://pastebin.com/Hm2zW9xR . Goutham Tholpadi https://sites.google.com/site/gtholpadi/ On Tue, Aug 27, 2013 at 10:05 PM, Goutham Tholpadi <gtholp...@gmail.com> wrote: > 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 --------------------------------------------------------------------- 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