При поиске набора документов я могу легко найти количество документов, которые соответствуют моим критериям поиска:
Hits hits = Searcher.Search(query);
int DocumentCount = hits.Length();
Как я определяю общее количество хитов в рамках документов? Например, скажем, я ищу "конгресс", и я возвращаю 2 документа. Как я могу добраться, количество раз "конгресс" происходит в каждом документе? Например, скажем, "конгресс" происходит 2 раза во времена документы № 1 и 3 в документе № 2. Результат, который я ищу, равняется 5.
Это Lucene Java, но должно работать для Lucene.NET:
List docIds = // doc ids for documents that matched the query,
// sorted in ascending order
int totalFreq = 0;
TermDocs termDocs = reader.termDocs();
termDocs.seek(new Term("my_field", "congress"));
for (int id : docIds) {
termDocs.skipTo(id);
totalFreq += termDocs.freq();
}
Это тоже Lucene Java.Если ваш критерий запроса / поиска может быть записан как SpanQuery , то вы можете сделать что-то вроде этого:
IndexReader indexReader = // define your index reader here
SpanQuery spanQuery = // define your span query here
Spans spans = spanQuery.getSpans(indexReader);
int occurrenceCount = 0;
while (spans.next()) {
occurrenceCount++;
}
// now occurrenceCount contains the total number of occurrences of the word/phrase/etc across all documents in the index