2016-11-07 153 views
0

以下lucene.net过滤是我的架构在多个领域

PRODUCT_NAME(分析),类别(分析)

场景:
我要搜索的产品,其种类也正是“手机&附件”和PRODUCT_NAME是 “萨姆*”

等效SQL查询

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

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

回答

0

由于这是一个几个月大,我会简短的(如果你仍然有兴趣,我可以扩大)...

如果你想有一个精确匹配的类别,然后不分析。分析仪会将字符串切分成可搜索的位。匹配的情况可能有问题,所以也许只有小写分析器可以用于该领域。 以不同方式分析几个字段以便可以使用不同的查询可能会很有用。

注:“萨姆·”不等同于“%SAM%”

你想“萨姆”是一个前缀,即“样品”或单词“the SAM产品”? 如果是一个词,那么一个没有停用词的分析器应该没问题。 一个不错的诀窍是用名称的变体创建许多字段(具有相同的名称)。也许只是一个小写分析

名称:“一些小样”

名称:“小样”

名称”,‘产品’

再看看在‘前缀查询’ 。(name:sam)的查询将会匹配。

也可以看一下PerFieldAnalyzerWrapper,以便为每个字段使用不同的分析器