Sphinx - фильтр по одному индексу, поиск по другому полному тексту

Для портала по недвижимости агенты записывают, сколько гостей дома пришло на день открытых дверей. Я пытаюсь использовать sphinx api для фильтрации домов с наибольшим количеством посещений в индексе sphinx под названием "open_house_guest_info", а затем ищу по идентификаторам этих домов в другом индексе sphinx, который имеет вводный дом "дома" с поисковым запросом.

индекс "open_house_guest_info":
date, house_id, guest_count

индекс домов:
house_id, house_intro

Я знаю, как это сделать с MySQL, но я пытаюсь сделать это с помощью Sphinx. Как я могу искать текст другого индекса на основе атрибутов, отфильтрованных из другого индекса, связанного с "house_id"?


person Wonka    schedule 11.09.2012    source источник


Ответы (1)


Сфинкс не может индексироваться. Вы должны поместить все данные в ОДИН индекс.

sql_query, который строит индекс, может включать JOIN, GROUP BY и т. д. Выполняется mysql для создания единого индекса.

sql_query = SELECT g.id,house_id,house_intro,REPLACE(date,'-','') as date,COUNT(g.id) AS guests FROM houses h INNER JOIN open_house_guest_info g USING (house_id) GROUP BY date,house_id

sql_attr_uint = house_id
sql_attr_uint = date
sql_attr_uint = guests

Затем можно фильтровать / группировать / упорядочивать по дате, house_id или гостю :) [в запросе сфинкса]

person barryhunter    schedule 12.09.2012