Я пытаюсь использовать функцию подсветки SOLR 4.4. После некоторых попыток он, наконец, работает, но не так, как я ожидал:Solr-Highlight: неожиданные результаты
Настройка генератора: у меня есть текст и поле заголовка. Оба индексируются и обыскиваются, но подсветка требуется только в поле заголовка.
- первого попытка: название поле в документе было установлено как
string
=> нет подсвечивания-результатов, даже если поле хранилось - 2-я попытка: не изменили поле для
text_ws
(толькоWhiteSpace-Tokenizer
). Я не был уверен, действительно ли мне былоindex
название поля, поэтому я сделал это. => HL, но только для прямых совпадений (q = Apple не назвала HL Apple-Pie в заголовке - q = Apple-Pie) - 3-я попытка: добавлено
ngram
в поле заголовка. Теперь q: apple дает удар, но выделяет полный Apple-pie, а не только термин запроса.
Теперь вопрос: что ожидаемое поведение или есть способ только выделить термин запроса
EDIT: фрагменты для ..
.. solrconfig. XML
<requestHandler name="/query" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">explicit</str>
<str name="wt">json</str>
<str name="indent">true</str>
<str name="df">text</str>
<str name="defType">edismax</str>
<str name="qf">title, text</str>
<str name="hl">true</str>
<str name="hl.fl">title</str>
<str name="hl.simple.pre"><b class="text-success"></str>
<str name="hl.simple.post"></b></str>
</lst>
</requestHandler>
.. schema.xml
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<charFilter class="solr.HTMLStripCharFilterFactory" />
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.WordDelimiterFilterFactory" stemEnglishPossessive="0" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.SnowballPorterFilterFactory" language="German" />
<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.SnowballPorterFilterFactory" language="German" />
<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
</analyzer>
</fieldType>
<fieldType name="text_ngrammed" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<charFilter class="solr.HTMLStripCharFilterFactory" />
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.NGramFilterFactory" minGramSize="3" maxGramSize="10" />
<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
<!-- <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> -->
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
<fields>
<!-- IDs -->
<field name="id" type="string" indexed="true" stored="true" required="true" />
<!-- Content -->
<field name="title" type="text_ngrammed" indexed="true" stored="true" termVectors="true" termPositions="true" termOffsets="true" />
<field name="text" type="text" indexed="true" stored="false" multiValued="true" />
</fields>
Не могли бы вы дать нам свой schema.xml, вероятно, соответствующие requesthandlers от вашего solrconfig.xml (в проверьте настройки по умолчанию) и запрос образца, который вы делаете? Это поможет воспроизвести вещи. – cheffe