Как добавить больше деталей для каждого результата в solr facet? - PullRequest
0 голосов
/ 15 декабря 2018

Я возвращаю результат с фасетом из solr 6.4.1, где моя цель состоит в том, чтобы:

  1. dial
  2. dial_id
  3. count dial (сколько результатов)

Поскольку я хочу отобразить имя (например, "черный") в виде фасета с количеством результатов, И создать ссылку, которая впоследствии будет фильтроваться для него.

Например:

/ search? Dial_id = 48

Причина в том, что я не хочу создавать URL-адрес, подобный этому:

/ search? Dial = Grün

В данный момент фацет выглядит так:

<lst name="dial">
   <int name="Rot">5</int>
   <int name="Grün">4</int>
</lst>

Создано с помощью PHP:

foreach($this->setFacet AS $facet) $this->query->addFacetField(''.$facet.''); 

Явно отсутствует идентификатор

Мой код для получения в настоящее время выглядит следующим образом:

function facete_dial(){
    foreach( $this->response->facet_counts->facet_fields->dial AS $dial => $count){
        $this->dial_facetes[$dial] = $count;    
    }
    return $this->dial_facetes;
}

Успешно возвращает цвет и количество результатов.

Как добавить dial_idв сторону, чтобы получить его позже?Или есть лучший подход к этой задаче?

1 Ответ

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

Прямым решением было бы создание вторичного поля - с объединенным значением как отображаемого значения, так и dial_id в сочетании с разделителем между ними.

Т.е. индексировать значение 48|Grün, затем сделать list($dial_id, $dial_name) = explode('|', $facet_name) в своем PHP-коде.

Поскольку фасетирование - это "сколько различных токенов и их количество существует в это поле", нет никакой внутренней корреляции между различными полями и их значениями.

Создание объединенного поля и последующее извлечение значений из этого поля решает эту проблему.

Другой вариант - выполнитьвторичный поиск информации dial_id => dial_name, например, в MySQL или в хранилище ключей / значений.Или, если информация обновляется редко, генерируйте файл PHP / JSON с ассоциативным массивом каждый раз, когда он обновляется, и включайте / читайте его в своем приложении для разрешения идентификаторов в именах.

...