Hi Clemens,
Goutham's code is at: https://github.com/gtholpadi/MyLucene
I'm doing something similar, adding weighting as some function of doc freq (and using Scala).
Cheers,
Neil

On 13/06/14 00:19, Clemens Wyss DEV wrote:
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

B�KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKCB��[��X��ܚX�KK[XZ[��]�K]\�\�][��X��ܚX�PX�[�K�\X�K�ܙ�B��܈Y][ۘ[��[X[��K[XZ[��]�K]\�\�Z[X�[�K�\X�K�ܙ�B�B


---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-user-h...@lucene.apache.org

Reply via email to