В настоящее время я использую Solr Edismax для поиска на нашем сайте.То, что я пытаюсь сделать, это, по сути, игнорировать тире.
Так что, если я буду искать слова, "wi-fi adapter"
.И у меня есть документ с заголовком "адаптер Wi-Fi".Я не получу никаких результатов.
В настоящее время я использую solr.MappingCharFilterFactory
для сопоставления штрихов с пробелами.Вот как мой text_general
fieldtype выглядит в моей схеме.
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
<analyzer type="index">
<tokenizer class="solr.ClassicTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<charFilter class="solr.HTMLStripCharFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.ClassicTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping.txt"/>
<filter class="solr.SynonymGraphFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<charFilter class="solr.HTMLStripCharFilterFactory"/>
</analyzer>
</fieldType>
Мой mapping.txt содержит строку ..
"-" => " "
Так что это правило делает, оно конвертируетштрихи к пробелу.
Так что, если я буду искать "адаптер Wi-Fi", он всегда будет показывать те же результаты, что и "wi fi adapter"
, но не будет показывать результаты для "wifi adapter"
.
Есть ли способ обработать тире, как это?По сути, я бы хотел относиться к "wifi adapter", "wi-fi adapter", and "wi fi adapter"
так же.