On Oct 20, 2010, at 2:53 PM, Martin O'Shea wrote:

> Uwe
> 
> Thanks - I figured that bit out. I'm a Lucene 'newbie'.
> 
> What I would like to know though is if it is practical to search a single
> document of one field simply by doing this:
> 
> IndexReader trd = IndexReader.open(index);
>        TermFreqVector tfv = trd.getTermFreqVector(docId, "title");
>        String[] terms = tfv.getTerms();
>        int[] freqs = tfv.getTermFrequencies();
>        for (int i = 0; i < tfv.getTerms().length; i++) {
>            System.out.println("Term " + terms[i] + " Freq: " + freqs[i]);
>        }
>        trd.close();
> 
> where docId is set to 0.
> 
> The code works but can this be improved upon at all?
> 
> My situation is where I don't want to calculate the number of documents with
> a particular string. Rather I want to get counts of individual words in a
> field in a document. So I can concatenate the strings before passing it to
> Lucene.

Can you describe the bigger problem you are trying to solve?  This looks like a 
classic XY problem: http://people.apache.org/~hossman/#xyproblem

What you are doing above will work OK for what you describe (up to the "passing 
it to Lucene" part), but you probably should explore the use of the 
TermVectorMapper which provides a callback mechanism (similar to a SAX parser) 
that will allow you to build your data structures on the fly instead of having 
to serialize them into two parallel arrays and then loop over those arrays to 
create some other structure.


--------------------------
Grant Ingersoll
http://www.lucidimagination.com


---------------------------------------------------------------------
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