SOLR: facet.field работает для каждого слова в поле по-разному, как применить facet.field для всего предложения поля? - PullRequest
1 голос
/ 19 февраля 2020

В facet.field я добавил поле "MerchantName", поэтому я получил результат, как показано ниже

"facet_fields":{
    "MerchantName":[
        "amazon",133281,
        "factory",99566,
        "club",99566,
        "fashion",4905,
        "swish",4905,
        "store",1001,
        "swank",1001,
        "the",1001
    ]
}

В приведенном выше массиве "club factory", "swi sh fashion" и " хранилище swank "находится в одном поле, но массив, как вы можете видеть, рассматривается как другое слово.

Итак, как применить фасетный запрос ко всему полю, который возвращает массив со значением всего поля?

1 Ответ

3 голосов
/ 19 февраля 2020

Поле MerchantName используется для огранки. Это поле должно быть определено в schema.xml как строка (type="string"), чтобы фасет использовал весь текст.

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

В противном случае оно разделит его в соответствии с тем, как оно было размечено.

Вы также можете добавить docValues="true" для поля MerchantName , тогда DocValues ​​будет автоматически использоваться всякий раз, когда поле используется для сортировки, фасетирования или функциональных запросов.

Для фасетирования Solr может использовать DocValues - это особый способ внутренней записи значений полей, более эффективен для некоторых целей, таких как сортировка и огранка, чем традиционное индексирование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...