【问题标题】:Lucene query to exclude docs, but not docs with partial matchesLucene 查询排除文档,但不排除部分匹配的文档
【发布时间】:2009-03-19 15:36:19
【问题描述】:

假设我有一组这样的文档:

  • 奔驰
  • 奔驰卡车

有没有办法创建一个可以过滤掉梅赛德斯而不是梅赛德斯卡车的查询?

【问题讨论】:

    标签: c# .net lucene


    【解决方案1】:

    如果您需要短语“mercedes trucks”,那么您的查询可以是

    “奔驰卡车”

    如果您需要 mercedes 和卡车这两个词,那么您的查询可以是

    +梅赛德斯+卡车

    梅赛德斯和卡车

    这些查询自然会过滤掉不包含卡车一词的文档。

    编辑: 除非这是一个关键字/未标记的字段。在这种情况下,只有第一个示例可以工作。

    【讨论】:

    • 我需要两个结果:“mercedes”和“mercedes trucks”才能返回。所以它们是未标记的(我需要空格)。
    • 您是说需要 Lucene 文档中返回的字段中的空格吗?如果您标记该字段并将其存储在 lucene 中,它仍将返回带有空格的值。
    【解决方案2】:

    你试过了吗:

    +汽车品牌:梅赛德斯* -汽车品牌:梅赛德斯

    (当然也可以是任何字段名)。 还是我根据具体例子过于简化了?

    【讨论】:

    • 只要我添加 -carbrand:mercedes 就没有任何回报。我没有标记该字段,因为我需要空格。
    • 好的,然后我会标记该字段。不知道为什么这不可能?老实说,想不出其他解决方案。
    猜你喜欢
    • 2020-02-21
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多