【发布时间】:2012-06-19 06:46:42
【问题描述】:
我在我的 Web 应用程序中使用 Lucene.net。 一切正常,但现在我必须在 hits 数组的每个文档中显示我的“搜索字符串”的出现次数。 我怎样才能做到这一点?我使用通常的 BooleanQuery。
这是我的搜索:
BooleanQuery bq = new BooleanQuery();
bq.Add(QueryParser.Parse(Lquery, "", CurIndexDescritor.GetLangAnalizer()), false,false);
BooleanQuery.SetMaxClauseCount(int.MaxValue);
IndexSearcher searcher = new IndexSearcher(indexPath);
Hits hits = (filter != null) ? searcher.Search(bq, filter) : searcher.Search(bq);
for (int i = 0; i < hits.Length(); i++)
{
Document doc = hits.Doc(i);
SearchResultItem MyDb = new SearchResultItem();
MyDb.key = doc.Get(KeyField);
MyDb.score = hits.Score(i);
result.Add(MyDb);
}
我在哪里可以获得出现次数?
谢谢!
【问题讨论】:
-
没有内置的方法可以做到这一点,因为通常这些信息几乎没有意义。您可以使用 TermFreqVector 但它会很慢。您仍然需要分数和/或想要按分数排序吗?
-
它有挖矿。这对我很重要。我必须根据我的请求结果对组织进行评级。请求由组织名称组成。实际上,我打算在我的搜索结果上建立新的索引,然后在它上面使用 Term request 来计算 termFreq,这不是个好主意吗?
-
我能否让 score 变得不那么复杂,而只是出现一些情况?
标签: asp.net lucene lucene.net