Lucene过滤器和“AND”运算符

时间:2010-10-22 11:05:47

标签: lucene.net

我正在构建电子商务搜索,我使用Lucene.Net作为我的搜索引擎。但是,我无法过滤我的查询。

这是我索引的文档之一,包含以下字段和值:
字段:“名称”,值:“Mochila MVP”
字段:“制造商”,价值“耐克配件”

现在,当我运行这些搜索时,我得到了以下结果:

用户类型查询
mochila ^ 5 nike ^ 2.5
Lucene将其翻译为:
(((姓名:mochil制造商:mochil)^ 5.0)((名称:nik制造商:nik)^ 2.5))
结果:
带来产品“Mochila MVP”

用户类型查询
mochila ^ 5 AND nike ^ 2.5
Lucene将其翻译为:
(+((姓名:mochil制造商:mochil)^ 5.0)+((姓名:nik制造商:nik)^ 2.5))
结果:
没有结果

用户类型查询
mochila ^ 5 +制造商:耐克
Lucene将其翻译为:
((姓名:mochil)^ 5.0)+制造商:耐克
结果:
没有结果

我想知道的是为什么第二次和第三次查询没有结果,因为它们似乎与我的产品名称和制造商相匹配......

非常感谢任何帮助。提前谢谢!

1 个答案:

答案 0 :(得分:0)

为什么会出现这种[意外]结果有很多可能的原因。以下是可以帮助您解决此问题的原因:

  • 如何构建索引?
    • 分析器事项
    • 实际索引(分析)了哪些字段。我想可能不会分析'制造商' - 请注意,您的第一个查询会在所有字段中搜索这两个字词(即表现得像'全部捕获')
  • 选择Luke并查看索引中的内容
  • 另请注意,当您使用“AND”或“+”时,这实际上意味着'并且这些字词必须出现在此字段中'(即此类查询比您的第一个更严格)