我正在使用Solr。我需要通过使用来搜索我们得到的关键字 例如,我想搜索x1碳, 在我的SQL搜索中我得到了正确的结果
select * from table where name like "%x1 carbon%"
在solr中我得到了正确的结果但是我没有得到例如说的条目,但我在mysql中使用类似“%text%”
获得以下条目x1碳 x1碳 x1碳 .................
我的架构在下面
<fieldType name="text_general_k" class="solr.TextField">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
我应该怎样做才能获得上述vaules,如
someword_x1 carbon
和
someword_x1 carbon_?
这个模式我没有得到
<fieldType name="string" class="solr.StrField" sortMissingLast="true" />
<fieldType name="text_general_k" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
我附上了查询分析器的场景
答案 0 :(得分:1)
您可以在自己的字段下尝试以下自定义字段类型。
<fieldType name="likeField" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
使用下面的配置,字符串值尼日利亚会细分为以下字词
Nigerian => "ni", "nig", "nige", "niger", "nigeri", "nigeria", "nigeria", "nigerian"