Данные в нашем поле 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>
Поле динамическое ("свойство_*"), поэтому в обоих случаях используется один и тот же анализатор.
В настоящее время при поиске «2 ГБ» он возвращает документы с «2 ГБ», но пропускает «2 ГБ» (пробел).
Вопрос: как установить этот тип поля в схеме, чтобы он сопоставлял результаты с пробелами и без них?
Например:
Поиск +(property_Info_Memory:("320gb")) должен вернуть обе первые строки выше, соответствующие "320GB" AND "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 ГБ), и пропустят те, которые не содержат пробелов (320 ГБ).
В большинстве документов есть данные без пробелов, поэтому текущая настройка.
Заранее спасибо за помощь.