我正在尝试将 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/