Включение имен полей solr в строку поиска, но не в фасет

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

Пример имени поля и данных:

Умение: - плохо - хорошо - отлично

Это поле копируется в текстовое поле по умолчанию, и я хотел бы, чтобы пользователь мог искать "плохой навык", не выбирая поле "навык".

Я расширил данные поля так, что я индексирую:

  • Плохой навык
  • Хороший навык
  • Отличный навык

Но, очевидно, когда я использую это в качестве фасета поиска, я получаю "Навык" в ответ.

Есть ли способ сказать Solr включить имя поля как часть того, что индексируется? Могу ли я добавить дополнительный текст в поле для копирования? то есть он индексирует "плохой", но я могу скопировать "плохой навык" в основное поле текстового индекса.

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

Какие-либо предложения?

1 ответ

Вы должны использовать два поля в вашем документе. Один для поиска, а другой для отображения фасета.

Затем примените разные фильтры в этих двух полях. Фильтры в поле "поиск", очевидно, должны облегчать поиск (например, ASCIIFolding). Фильтры в поле "фасет" должны печатать ваши значения фасетов (например, CapitalizationFilter)

Если вам нужно добавить слово "навык", чтобы создать свой аспект, я думаю, что вы должны прочитать этот документ: http://wiki.apache.org/solr/UpdateRequestProcessor

Создав пользовательский процессор, вы сможете добавить слово "навык" для фасета.

Другие вопросы по тегам