lucene.net - 如何充分利用 Lucene.net

标签 lucene.net

我正在尝试将 Lucene.net 合并到我的网络搜索中。

目前我有一个 lucene.net 索引,其中包含 +100 万个文档,每个文档有 7 个字段。
最后一个字段是“所有”字段,它连接了先前字段的内容。搜索所有字段非常快:)

但我觉得这里还有更多的东西可以找到。如何在不使用“全部”字段的情况下进行搜索,在所有字段中搜索一个或多个空格分隔的字符串?
我希望能够为某些领域赋予权重。此外,如果搜索包含有关命中发生的位置的信息,那么我就可以在结果中显示它,这将非常好。

我认为这一切都是可能的,但我不知道怎么做。
有什么帮助吗?

最佳答案

我们做了类似的事情,诀窍是在查询字符串中指定字段:

(+Tier1:ribbon^1)^4 OR (+Tier2:ribbon^1)^4 OR (+Tier3:ribbon^1) OR (+Tier4:q*ribbon*^1)^12

在上面的示例中,用户在我们的应用程序中搜索了“ribbon”。我们在不同的字段中有不同的数据段,最后一个字段“Tier4”包含连接在一起的所有先前的术语。我们在字段前面加上一个“q”,这样我们就可以做前导通配符,也:
(+Tier4:q*ribbon*^1)^12

最后,我们使用带有脱字符 (^) 的提升。这最终会以不同的方式加权。获得正确的提升需要一段时间,我仍然对它们不是 100% 满意,但它们确实产生了很大的影响。

关于lucene.net - 如何充分利用 Lucene.net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/532365/

相关文章:

c# - 有趣的 Lucene.net 异常

lucene - 如何获取 solr 术语频率?

c# - Lucene 拼写检查器排名建议很奇怪

search-engine - Lucene.NET 性能

lucene - 为 solr 构建案例

lucene.net - 结合 Lucene.NET 和关系数据库的最佳实践?

lucene.net - 如何使用新的Sitecore.Search API进行排序/过滤

Lucene .Net 优化流程

c# - 如何将 Lucene.NET RangeQuery 转换为 NumericRangeQuery 以进行日期范围搜索?

c# - Lucene.net 搜索引擎