solrフィールドのデータは次のようになります。
<str name="property_Info_Hd">320 GB SATA 7200RPM</str>
<str name="property_Info_Hd">320GB SATA</str>
<str name="property_Info_Memory">4 GB of DDR2</str>
<str name="property_Info_Memory">2GB of DDR3</str>
フィールドは動的( "property_ *")であるため、どちらの場合も同じアナライザーを使用します。
現在、「2GB」を検索すると、「2GB」のドキュメントが返されますが、「2GB」(空白)が欠落しています。
質問は、このフィールドタイプをスキーマに設定して、空白がある場合とない場合の結果に一致するようにするにはどうすればよいですか?
例えば:
+(property_Info_Memory:( "320gb"))を検索すると、「320GB」と「320GB」に一致する上記の最初の行の両方が返されます。
フィールドタイプの設定方法は次のとおりです。
<fieldType name="textFilter" class="solr.TextField"
positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory" />
<filter class="solr.WordDelimiterFilterFactory"
splitOnCaseChange="0"
splitOnNumerics="0"
stemEnglishPossessive="0"
catenateWords="1"
catenateNumbers="1"
catenateAll="1"
preserveOriginal="1"
generateWordParts="1"
generateNumberParts="1"/>
<filter class="solr.TrimFilterFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.ISOLatin1AccentFilterFactory" />
</analyzer>
</fieldType>
splitOnCaseとsplitOnNumericsのバリエーションを使用してみましたが、どれも成功しませんでした。その場合、結果は空白(320 GB)のあるものと一致し、空白のないもの(320GB)を見逃します。
ほとんどのドキュメントには空白のないデータが含まれているため、現在の設定はそのためです。
よろしくお願いします。