Lucene.net对多个字段进行过滤

本文关键字:过滤 字段 net Lucene | 更新日期: 2023-09-27 18:16:43

下面是我的schema

Product_Name (Analyzed),Category (Analyzed)

场景:
我想搜索那些类别恰好是"手机"的产品。, Product_Name为sam*

等价的SQL查询是

select * from products
where Product_Name like '%sam%' and Category='Cellphones & Accessories'

我正在使用lucene.net。
我需要等价的lucene.net语句

Lucene.net对多个字段进行过滤

由于这是几个月前的事,我将简短(如果你仍然感兴趣,我可以扩展)…

如果您想要与Category完全匹配,那么不要分析。分析器将把字符串切碎,然后进行搜索。匹配大小写可能会有问题,所以可能只有小写分析器才适用于该字段。以不同的方式分析多个字段,以便使用不同的查询,这可能会很有用。

注意:"sam*"不等于"%sam%"

您希望"sam"是前缀"sample"还是单词"the same product"?如果它是一个单词,那么无停顿词分析器应该是好的。一个不错的技巧是使用不同的名称创建许多字段(具有相同的名称)。可能只有小写分析器

name: "some sample product"

名称:"样品"

名称"产品"

然后看看"前缀查询"。查询(name:sam)将匹配。

还可以查看PerFieldAnalyzerWrapper,以便为每个字段使用不同的分析器。