我正在尝试将Lucene.net纳入我的网络搜索。
目前我有一个lucene.net索引,其中包含+1万个文档,每个文档有7个字段。 最后一个字段是“all”字段,其中包含先前字段连接的内容。搜索所有字段的速度非常快:)
但我觉得这里还有更多内容。如何在不使用“all”字段的情况下进行搜索,在所有字段上搜索一个或多个空格分隔的字符串? 我希望能够为某些领域赋予权重。此外,如果搜索包含关于发生命中的WHERE的信息,那将非常好,所以我可以在结果中显示它。
我认为这一切都是可能的,但我不会随便看看如何 有什么帮助吗?
答案 0 :(得分:4)
我们做类似的事情,诀窍是在查询字符串中指定字段:
(+Tier1:ribbon^1)^4 OR (+Tier2:ribbon^1)^4 OR (+Tier3:ribbon^1) OR (+Tier4:q*ribbon*^1)^12
在上面的示例中,用户在我们的应用程序中搜索了“功能区”。我们在不同的字段中有不同的数据段,最后的字段“Tier4”包含连接在一起的所有先前的术语。我们在前面加上一个“q”,所以我们可以做领先的外卡,也是:
(+Tier4:q*ribbon*^1)^12
最后,我们使用插入符号(^)进行提升。这最终会以不同的方式加权。需要一段时间才能获得正确的提升,而且我仍然不会对他们百分百满意,但他们确实会产生很大的影响。
答案 1 :(得分:3)
我认为您不需要维持“全部”字段。
答案 2 :(得分:1)
你必须得到Lucene in Action。虽然关于原始(即Java)Lucene实现,它包含了您需要的所有信息:有关boost,highlighters,qwery解析器等。