我有一个问题,我正在尝试搜索像这样的字段
modelnumbers:"ModeL SX4"
我没有数据。我试图使区分大小写的字段看起来像:
<arr name="modelnumbers">
<str>Model sX4</str>
</arr>
尝试了所有可能的解决方案,例如在schema.xml中添加以下内容:
<fieldType name="text" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true" >
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory" ignoreCase="true"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory" ignoreCase="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="true"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
并将其与字段一起使用:
<field name="modelnumbers" type="text" indexed="true" stored="true" multiValued="true" />
多次重新发布我的数据。不工作。 如果我搜索“model sX4”,它可以工作,但任何其他修改如“ModeL SX4”都会失败。结果没有一致性。另外一个字段看起来像:“24AAB3”,如果我尝试搜索“24aAB3”。这也行不通。
请帮忙。
答案 0 :(得分:1)
您的探针位于WordDelimiterFilterFactory中。因为它将“ModeL SX4”分成“M ode L SX 4”或类似的东西。因此,在tokenizer之后放置LowerCaseFilterFactory,你应该没问题。