0

データが得られないようにフィールドを検索しようとしているという問題があり 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" />

私のデータを何度も再公開しました。動作していません。「モデル sX4」を検索すると機能しますが、「モデル SX4」などの他の変更はすべて失敗します。結果に一貫性がありません。また、「24aAB3」を検索すると、「24AAB3」のような別のフィールドが表示されます。これも機能しません。

助けてください。

4

1 に答える 1

1

あなたのprobemはWordDelimiterFilterFactoryにあります。「ModeLSX4」を「ModeLSX4」などに分割しますので。したがって、トークナイザーの直後にLowerCaseFilterFactoryを配置すると、問題がないはずです。

于 2012-04-19T10:51:20.180 に答える