lucene.net过滤多个字段

时间:2016-11-07 13:49:06

标签: c# lucene lucene.net

以下是我的架构

Product_Name(已分析),类别(已分析)

情境:
我想搜索那些类别正是"手机&配件"和Product_Name是" sam *"

等效SQL查询

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

我正在使用lucene.net 我需要等效的lucene.net声明。

1 个答案:

答案 0 :(得分:0)

由于这是几个月的时间,我会简短的(如果你还有兴趣我可以扩展)...

如果您想要与Category完全匹配,请不要进行分析。分析仪会将字符串切割成可随后搜索的位。匹配案例可能会有问题,因此可能只有小写分析器才适用于该字段。 以不同方式分析几个字段可能很有用,这样就可以使用不同的查询。

注意:“sam *”不等于“%sam%”

你想要“sam”作为前缀,即“样本”或单词“sam product”吗? 如果它是一个单词,那么无障碍分析器应该没问题。 一个很好的技巧是创建许多具有名称变体的字段(具有相同的名称)。可能只有一个小写分析器

名称:“一些样本产品”

名称:“样本产品”

名称“”产品“

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

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