Включение имен полей solr в строку поиска, но не в фасет
Я хочу иметь возможность включать имя поля в свой поиск, но не отображаться как часть индексируемого термина в фасете поиска.
Пример имени поля и данных:
Умение: - плохо - хорошо - отлично
Это поле копируется в текстовое поле по умолчанию, и я хотел бы, чтобы пользователь мог искать "плохой навык", не выбирая поле "навык".
Я расширил данные поля так, что я индексирую:
- Плохой навык
- Хороший навык
- Отличный навык
Но, очевидно, когда я использую это в качестве фасета поиска, я получаю "Навык" в ответ.
Есть ли способ сказать Solr включить имя поля как часть того, что индексируется? Могу ли я добавить дополнительный текст в поле для копирования? то есть он индексирует "плохой", но я могу скопировать "плохой навык" в основное поле текстового индекса.
Я мог бы вычеркнуть это на внешнем интерфейсе пользовательского интерфейса, но это кажется немного грязным, и я надеялся на более элегантное решение.
Какие-либо предложения?
1 ответ
Вы должны использовать два поля в вашем документе. Один для поиска, а другой для отображения фасета.
Затем примените разные фильтры в этих двух полях. Фильтры в поле "поиск", очевидно, должны облегчать поиск (например, ASCIIFolding). Фильтры в поле "фасет" должны печатать ваши значения фасетов (например, CapitalizationFilter)
Если вам нужно добавить слово "навык", чтобы создать свой аспект, я думаю, что вы должны прочитать этот документ: http://wiki.apache.org/solr/UpdateRequestProcessor
Создав пользовательский процессор, вы сможете добавить слово "навык" для фасета.