配置solr以匹配标点符号,例如't恤'匹配'T恤'

时间:2015-09-06 10:32:30

标签: search solr lucene

我正在使用Solr在服装网站上索引产品。目前我正在努力让Solr根据搜索字词YES匹配t-shirt,但我对于需要哪些过滤器感到有点迷失。

这是我用来索引大多数字段的通用字段类型:

tshirt

我尝试从索引和查询分析器中删除<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt" enablePositionIncrements="true" /> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.EnglishPossessiveFilterFactory"/> <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> <filter class="solr.PorterStemFilterFactory"/> <filter class="solr.WordDelimiterFilterFactory" catenateWords="1" catenateAll="1" preserveOriginal="1"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt" enablePositionIncrements="true" /> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.EnglishPossessiveFilterFactory"/> <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> <filter class="solr.PorterStemFilterFactory"/> <filter class="solr.WordDelimiterFilterFactory" catenateWords="1" catenateAll="1" preserveOriginal="1"/> </analyzer> </fieldType> ,但它没有帮助。任何建议/最佳实践都会非常感激。

1 个答案:

答案 0 :(得分:1)

您希望将WordDelimiterFilter放在您的链上,并且您想要使用空白标记符。维基上的例子就是这样。

现在的问题是令牌早先被拆分为单独的令牌,而worddelimeterfilter只能看到每个令牌。因此,它会看到t,然后是shirt并且没有任何事情要做。

通过使用空格标记器,您可以让WDF看到&#34; T恤&#34;,允许它生成T恤,衬衫,T恤等。

使用&#34;分析&#34; Solr Admin下的页面,以查看分析中的每个步骤以及结果。