solr不区分大小写

时间:2012-04-19 09:56:00

标签: solr case-sensitive

我有一个问题,我正在尝试搜索像这样的字段 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”。这也行不通。

请帮忙。

1 个答案:

答案 0 :(得分:1)

您的探针位于WordDelimiterFilterFactory中。因为它将“ModeL SX4”分成“M ode L SX 4”或类似的东西。因此,在tokenizer之后放置LowerCaseFilterFactory,你应该没问题。