Результаты Solr сгруппированы по полям (но группировка на основе аспектов)

Я использую Apache Lucene Solr для индексации и поиска данных. Здесь я пытаюсь построить операцию автозаполнения:

У меня есть документы, например лица. Допустим, человека описывают какие-то поля в документе, id, имя, должность, национальность. (Ник Фьюри, доктор, англичанин / Джон Док, учитель, доминиканец / Джим Тайсон, докер, поляк). Когда я пишу «делать», мы хотим, чтобы предложения были:

--- Работа (метка)

Врач

Рабочий дока

--- Национальность (метка)

Доминиканский

---Имя (метка)

Джон Док

Итак, мы хотим что-то вроде Suggester, я пробовал, но с группировкой результатов по совпадающим полям, всегда в определенном порядке: сначала совпадающие вакансии, затем национальности, если они есть...., и, если возможно, внутри категорий, мы можем сортировать по количеству или релевантности.

Затем я попробовал с 3 гранями. Но я не могу найти, как сгруппировать аспекты, чтобы рабочие места, национальности .... были сгруппированы вместе.

Есть какой-либо способ сделать это? В solr irc некоторые люди ответили, что мне нужно использовать 2 запроса. Как я могу это сделать?

Это примерно так: http://www.cominvent.com/2012/01/25/super-flexible-autocomplete-with-solr/ , но там ищется только одно поле и потом оно группируется по категориям. В моем примере это было бы при вводе «co», возвращающем:

--- Категория

Страны

Континенты

--- Страны и города

Колумбия

Коста-Рика...


person tasoss    schedule 01.11.2016    source источник


Ответы (1)


Вы можете создать разные подсказки для каждого поля в компоненте «предложить»:

<searchComponent name="suggest" class="solr.SuggestComponent">
   <lst name="suggester">
      <str name="name">job</str>
      <str name="field">job</str>
      ...
   </lst>
<lst name="suggester">
      <str name="name">nationality</str>
      <str name="field">nationality</str>
      ...
   </lst>
</searchComponent>

(вы можете добавить больше предложений...)

Затем один обработчик запроса «/suggest»:

<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
  <lst name="defaults">
      <str name="echoParams">all</str>
      <str name="wt">json</str>
      <str name="indent">false</str>
    <str name="suggest">true</str>
    <str name="suggest.count">10</str>
  </lst>
  <arr name="components">
    <str>suggest</str>
  </arr>
</requestHandler>

Затем на стороне клиента:

http://localhost:8983/solr/collection1/suggest?suggest.q=co&suggest.dictionary=job&suggest.dictionary=nationality
person James Doepp - pihentagyu    schedule 01.11.2016