Я пытаюсь получить правильное выделение, используя Apache Solr. В случае частичного совпадения я хочу выделить совпадающую часть слова. Однако вместо этого выделяется целое слово (которое частично соответствует поисковому запросу).
Пример:
Выполните поиск по запросу "adida shi", в результате вы получите два предмета: один с названием "рубашки adidas", а другой - "красные рубашки adidas".
/select?q=name:adida+shi&hl=true&hl.fl=name&qt=standardwt=json
Ожидаемое выделение:
<em>adida</em>s <em>shi</em>rts
<em>adida</em>s red <em>shi</em>rts
Актуальная подсветка:
<em>adidas</em> <em>shirts</em>
<em>adidas</em> red <em>shirts</em>
Поле, которое используется для выделения, определяется следующим образом в schema.xml:
<field name="name" type="autocomplete_text" indexed="true" stored="true"/>
Тип поля для поля выглядит так:
<fieldType name="autocomplete_text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
У меня нет конкретной конфигурации для выделения в основном файле конфигурации.
Я использую Solr v6.0.1. Подсветка работала, как и ожидалось, с solr v4.10.4 с той же конфигурацией. Я просмотрел следующие разделы вики Solr и попробовал различные параметры выделения, но не смог заставить его работать:
https://cwiki.apache.org/confluence/display/solr/Highlighting https://cwiki.apache.org/confluence/display/solr/Standard+Highlighter
Есть идеи, как заставить его работать?