Как добавить больше деталей для каждого результата в Solt Facet?

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

  1. набирать номер
  2. dial_id
  3. отсчет набора (сколько результатов)

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

например.:

/ Поиск? Dial_id = 48

Причиной этого является то, что я не хочу создавать URL, как это:

/ Поиск? Наберите = Грюн

На данный момент это выглядит так:

<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 к фасету, чтобы получить его позже? Или есть лучший подход к этой задаче?

0

Решение

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

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

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

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

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]