以下是我的架构
Product_Name(已分析),类别(已分析)
情境:
我想搜索那些类别正是"手机&配件"和Product_Name是" sam *"
等效SQL查询
select * from products
where Product_Name like '%sam%' and Category='Cellphones & Accessories'
我正在使用lucene.net
我需要等效的lucene.net
声明。
答案 0 :(得分:0)
由于这是几个月的时间,我会简短的(如果你还有兴趣我可以扩展)...
如果您想要与Category完全匹配,请不要进行分析。分析仪会将字符串切割成可随后搜索的位。匹配案例可能会有问题,因此可能只有小写分析器才适用于该字段。 以不同方式分析几个字段可能很有用,这样就可以使用不同的查询。
注意:“sam *”不等于“%sam%”
你想要“sam”作为前缀,即“样本”或单词“sam product”吗? 如果它是一个单词,那么无障碍分析器应该没问题。 一个很好的技巧是创建许多具有名称变体的字段(具有相同的名称)。可能只有一个小写分析器
名称:“一些样本产品”
名称:“样本产品”
名称“”产品“
然后看看“前缀查询”。 (name:sam)的查询将匹配。
另请查看PerFieldAnalyzerWrapper,以便为每个字段使用不同的分析器。