Сортировка документов Solr по подстроке из многозначного поля - PullRequest
1 голос
/ 29 марта 2019

Не уверен, смогу ли я достичь этого

У меня есть следующие документы в индексе

{
  "name": "nissan",
  "type": "product",
  "features":["build_100",
          "stability_80"]
}

{
  "name": "toyota",
  "type": "product",
  "features":["stability_100",
          "design_30"]
}

{
  "name": "Audi",
  "type": "product",
 "features":["build_70",
          "design_100"]
}

При поиске сборки в поле «дизайн» функций я возвращаю документы 2 и 3 из отзыва, и мой вопрос заключается в том, каким образом я мог бы сортировать / ранжировать документы на основе числа после «_», так что в приведенном выше случае я бы сначала получил doc3, а затем doc 2?

Если это может быть достигнуто путем изменения структуры документа, то это тоже хорошо для меня.

1 Ответ

1 голос
/ 29 марта 2019

Индексируйте их как независимые поля и обязательно включайте в них значения docValues ​​(по умолчанию включено в последней версии Solr).

<dynamicField name="features_*" type="int" indexed="true" stored="true"/>

Затем вы индексируете каждую функцию как отдельное поле:

"feature_design": 100,
"feature_build": 70,

и так далее.Сортировка по полю может быть выполнена таким же образом, как и по любому другому полю (sort=feature_design).

...