Как игнорировать токены в фасетах от solr - PullRequest
0 голосов
/ 14 декабря 2018

Я использую в Solr 6.41:

WordDelimiterFilterFactory

, чтобы искать строки, содержащие точки без них в запросе.

"00120123" (возвращая также результат 001.20.123)

Проблема состоит в том, что поле также предоставляет фасетку, которая теперь отображает токены вместо всего поля.

Токены создаются в поле типа text_wd:

<fieldType name="text_wd" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.WordDelimiterFilterFactory" preserveOriginal="1" catenateAll="1" />
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
</fieldType>

<field name="refnumber" type="text_wd" indexed="true" stored="true" required="false" />

Фасеты, содержащие токены:

001 (1324)
20 (909)
123 (480)

Желаемая фасетка:

001.20.123

Как сохранитьжелаемый функционал и в то же время не иметь токены внутри фейстеты?

1 Ответ

0 голосов
/ 14 декабря 2018

Используйте отдельное поле для ваших граней.Фасеты используют базовую структуру токенов для генерации значений, и вам нужно будет сохранить поле в виде единого значения, чтобы получить желаемый тип фасетов.

Используйте отдельное поле с типом, который используеттип StrField, а затем используйте инструкцию copyField для перемещения содержимого из refnumber в это поле.

<field name="refnumber" type="text_wd" indexed="true" stored="true" required="false" />
<field name="refnumber_facet" type="string" indexed="true" stored="false" required="false" />
<copyField source="refnumber" dest="refnumber_facet"  />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...