TermFreqVector lucene .net - PullRequest
       8

TermFreqVector lucene .net

0 голосов
/ 01 февраля 2011

Я могу получить документы по категориям следующим образом:

IndexSearcher searcher = new IndexSearcher(dir);

                Term t = new Term("category", "Feline");
                Query query = new TermQuery(t);
                Hits hits = searcher.Search(query);

                for (int c = 0; c < hits.Length(); c++)
                {
                    Document d = hits.Doc(c);
                    Console.WriteLine(c + " " + d.GetField("category").StringValue());
                }

Теперь я хотел бы получить TermFreqVector для документов в хитах.Обычно я делаю это так:

for (int c = 0; c < searcher.MaxDoc(); c++)
                {
                    TermFreqVector TermFreqVector = IndexReader.GetTermFreqVector(c, "content");

                    String[] terms = TermFreqVector.GetTerms();//get the terms
                    int[] freqs = TermFreqVector.GetTermFrequencies();//
                }

Однако я не уверен, как это сделать в моем сценарии (т.е. просто получить их для документов в хитах).Документы также имеют БД ПК.

Спасибо.

Кристиан

1 Ответ

0 голосов
/ 03 февраля 2011

Первым параметром IndexReader.GetTermFreqVector (в вашем примере "c") является номер документа. hits.id(c) вернет идентификатор результата cth. Так что вы бы сделали что-то вроде:

int Id = hits.id(c);
TermFreqVector TermFreqVector = IndexReader.GetTermFreqVector(Id, "content");
// etc.

(Примечание: класс Hits устарел; вы, вероятно, хотите использовать что-то вроде HitCollector или другую перегрузку поиска.)

...