我们 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”和“320 GB”。
这是字段类型的设置方式:
<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)。
大多数文档的数据都没有空格,这就是当前设置的原因。
在此先感谢您的帮助。