这是我的(相当标准的)ngram 模式 --
<fieldType name="ngram" class="solr.TextField" positionIncrementGap="100" stored="false" multiValued="true">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.NGramFilterFactory" minGramSize="1" maxGramSize="15"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
现在 laptop_ngram:"g74sx-a"返回 --
<arr name="laptop_ngram">
<str>ASUS G74SX-A1 17.3-Inch Gaming Laptop</str>
</arr>
但 laptop_ngram:"g74sx-a1"什么也没找到。
顺便说一句,转义“-”没有任何区别。
有什么想法吗?
最佳答案
StandardTokenizerFactory 可能会对术语做一些事情。您可以在分析页面中查看。
因此更改为 WhitespaceTokenizerFactory 可以解决问题。
关于search - Solr Ngram Match Woe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8891119/