【问题标题】:Lucene filters and the "AND" operatorLucene 过滤器和“AND”运算符
【发布时间】:2010-11-15 16:01:59
【问题描述】:

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

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

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

用户输入的查询:
mochila^5 耐克^2.5
Lucene 将其翻译为:
((((名称:mochil 制造商:mochil)^5.0) ((名称:nik 制造商:nik)^2.5))
结果:
带来产品“Mochila MVP”

用户输入的查询:
mochila^5 和耐克^2.5
Lucene 将其翻译为:
(+(((名称:mochil 制造商:mochil)^5.0) +((名称:nik 制造商:nik)^2.5))
结果:
没有结果

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

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

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

【问题讨论】:

    标签: lucene.net


    【解决方案1】:

    您得到这种[意外]结果的可能原因有很多。以下是可能有助于您解决此问题的方法:

    • 如何构建索引?
      • 分析仪很重要
      • 实际索引(分析)了哪些字段。我猜“制造商”可能不会被分析 - 请注意,您的第一个查询会在所有字段中搜索这两个术语(即表现得像“全能”)
    • 带上Luke 看看你的索引里面有什么
    • 另请注意,当您使用“AND”或“+”时,这实际上意味着“并且这些术语必须出现在此字段中”(即此类查询比您的第一个查询更严格)李>

    【讨论】:

    • 谢谢,最终问题出在我建立索引的方式上,就像你建议的那样。最终对我有用的是索引标记化(分析)、存储和术语向量的组合(尽管我还不知道这意味着什么)。如果我更改该配置,它将无法正常工作......但就是这样,谢谢!
    猜你喜欢
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    • 2012-04-04
    相关资源
    最近更新 更多