Можно ли сократить время поиска с использованием Hitcollector Lucene, и если да, то как это будет правильно реализовано в следующей ситуации?Улучшить скорость поиска Lucene с помощью hitcollector
// search login here ie.
// this is the search method
// random query
if (!string.IsNullOrEmpty(vendor))
{
bQuery.Add(qbVendor.Parse(vendor.ToLower()), BooleanClause.Occur.MUST);
}
bQuery.Add(qbWebsite.Parse(website.ToLower()), BooleanClause.Occur.MUST);
TopDocs hits = this.ProductIndexSearcher.Search(bQuery, null, 1000)
return hits.scoreDocs;
И эта часть будет вызов функции:
ScoreDoc[] docs = null;
docs = s.KeywordSearch(keyword, category, Webshop.Context.InSiteWebshopId, null, null).ToList(), 1000
foreach (ScoreDoc d in docs.Take(maxResult))
{
Document doc = this.ProductIndexSearcher.Doc(d.doc);
}
Из того, что я понимаю, что это не было бы желательно, чтобы получить документы из SearchResults используя Searcher.Doc но иметь hitcollector. Я попытался получить hitcollector, но в итоге смутился. Любая помощь приветствуется!
EDIT: Для того, чтобы выяснить, что меня беспокоит:
Для хорошей производительности поиска, реализации этого метода не должны вызова Searcher.doc (INT) или org.apache.lucene.index. IndexReader.document (int) на каждом документе встреченный номер. Это может замедлить поиск по порядку величины .
Так что я был просто интересно, если добавление hitcollector даст нам дополнительную производительность. Если вам не нужно использовать HitCollector при вызове Searcher.Search (params), как указано в первом ответе, я в порядке. Можете ли вы подтвердить это?
Большое спасибо за этот ответ. Из того, что я понимаю, мне не нужно использовать hitcollector, поскольку я действительно не делаю ничего интересного после извлечения документов. Я думал, что общий сбор заработанных очков может быть улучшен с использованием HitCollector. Если этот Searcher.Search уже использует hitcollector, это кажется прекрасным. – Younes