Как получить автозаполнение и пространственный поиск в одном запросе с помощью Solr? - PullRequest
0 голосов
/ 08 декабря 2011

Текущие функции:

  • Автозаполнение с использованием компонента терминов solr, параметра term.prefix.
  • ограничивающий прямоугольник для поиска географического местоположения.

Испытанные вещи:

  • Я попытался объединить оба запроса в один.Однако я никогда не получаю результаты для фильтрации по географическому положению.Скорее я получаю все из поиска по термину.
  • Я также пытался использовать поиск географического местоположения dismax, edismax + bbox.Я знаю, что dismax не будет работать, потому что у него нет префиксного параметра.
  • Я искал день и ночь в Google, чтобы попытаться выяснить это.
  • Я бы не хотел останавливаться на своемимя поля «имена», так что каждая буква считается ключевым словом.

Любая помощь действительно приветствуется.

1 Ответ

3 голосов
/ 08 декабря 2011

К сожалению, вы не можете сделать это в компоненте условий, поскольку он просто не поддерживает фильтрацию по другим полям, кроме того, для которого вы выпускаете компонент условий.

Самое простое решение проблемы - использовать стандартный обработчик запросов (т.е. <requestHandler name="standard" class="solr.SearchHandler>) с фильтром ограничивающих рамок:

fq={!bbox}&sfield=store&pt=45.15,-93.85&d=5

и фасет в поле, для которого вы хотите перечислить термины (при условии, что ваше имя поля 'names'):

facet=true&facet.field=names&f.names.facet.prefix=$yourprefix$

вы получите запрос типа:

/select?q=*:*&fq={!bbox}&sfield=store&pt=45.15,-93.85&d=5&facet=true&facet.field=names&f.names.facet.prefix=$yourprefix$

дает результат как:

<lst name="facet_counts">
  <lst name="facet_queries"/>
    <lst name="facet_fields">
      <lst name="name">
        <int name="maxtor">1</int>
        <int name="memory">1</int>
        <int name="mobile">1</int>
        <int name="mp500">1</int>
        <int name="mb">0</int>
        <int name="mini">0</int>
      </lst>
   </lst>
</lst>

(в фасетном разделе)

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