Как мне выполнить поиск по нескольким моделям в CMS с использованием Sphinx? - PullRequest
1 голос
/ 07 мая 2009

Я пытаюсь использовать Sphinx в моей CMS для поиска по всему сайту. Поскольку каждая модель в CMS имеет разные полнотекстовые поля, я создал индекс для каждой модели. Однако, согласно форуму Sphinx, поиск по нескольким индексам с другой схемой не поддерживается.

Как вы, ребята из CMS, используете Sphinx для общего поиска по сайту? Выполнение вызова Sphinx для каждой модели и отслеживание смещений нумерации страниц? Создание одного огромного индекса с индексным полем для модели / поля? Есть ли какое-то другое решение, о котором я не думаю?

1 Ответ

0 голосов
/ 01 декабря 2010

Вы, наверное, решили это давным-давно, но хорошо ...

Вы не можете охватить несколько индексов с разными схемами в одном вызове -> Query (), но вы можете выполнить несколько запросов с помощью AddQuery () и RunQueries ()

Итак, вместо звонка

->Query( 'keywords' , ( 'schemaA', 'schemaB', 'schemaC' ) )

Вы делаете:

->AddQuery('keywords' , ( 'schemaA') );
->AddQuery('keywords' , ( 'schemaB') );
->AddQuery('keywords' , ( 'schemaC') );
->RunQueries();

Вы получите массив результатов, по одному для каждого запроса. Затем на странице результатов поиска вы можете отобразить результаты, разделенные «типом» (или схемой), например:

___ СТРАНИЦА РЕЗУЛЬТАТОВ __ _ __ _ _

Поиск "синего" ...

--- мы нашли 23 результатов на автомобилях ----

  • машина 1
  • машина 2
  • автомобиль 3
  • ..

--- мы нашли 2 результатов в домах ----

  • дом 1
  • дом 2
  • дом 3
  • ..

_ (конец) СТРАНИЦА РЕЗУЛЬТАТОВ _ __ _ _

...