Счетчик обращений индекса Lucene - PullRequest
2 голосов
/ 02 февраля 2012

В Lucene я хочу узнать о количестве обращений в инвертированном индексе.

Может быть, у Lucene такой перевернутый индекс,

кошка собака
----- -----
d01 d02
d02 d01
d03 d03
----- -----

Если я использую запрос "кошка-собака", Lucene будет последовательно обращаться к инвертированному индексу. Я спрашиваю результат top-2, и только при 4-х доступах Lucene вернет d01, d02. В этом случае я хочу знать время доступа (в данном примере «4»).

В настоящее время я использую Lucene вот так.

Query q = new QueryParser(Version.LUCENE_35, "title", analyzer).parse(querystr);
int hitsPerPage = 10;
IndexSearcher searcher = new IndexSearcher(index, true);
TopScoreDocCollector collector = TopScoreDocCollector.create(hitsPerPage, true);
searcher.search(q, collector);
ScoreDoc[] hits = collector.topDocs().scoreDocs;

Спасибо.

1 Ответ

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

Асимптотически, если есть совпадения p и вы находите верх k, время будет p log k. Так что в вашем случае 6 log 2 = 6. (Конечно, при таких небольших числах эта формула дает смешные результаты).

См. это для получения дополнительной информации.

Обратите внимание, что "два лучших" не означает "первые два", а скорее "два самых высоких балла". В зависимости от весов в вашем примере, возможно, что Lucene мог игнорировать d03.

...