Предложить схему индекса Сфинкса - PullRequest
1 голос
/ 21 мая 2010

В базе данных MySQL у меня есть документы различного типа: некоторые имеют текстовое содержимое, мета-ключи, описания, другие имеют код, номер SKU, размер и название бренда и так далее. Проблема в том, что мне нужно что-то искать во всех этих документах, а затем отображать одну страницу, где результаты будут сгруппированы по типу документа, например странице справки, сообщению в блоге, элементу ... реализовать индекс Sphinx: я хочу иметь один индекс для ускорения запросов, но так как разные документы имеют разную структуру - как их сгруппировать? Я думал просто объединить их, но это нехорошо.

1 Ответ

1 голос
/ 21 мая 2010

Sphinx фактически не возвращает документы, связанные или нет, он возвращает первичные ключи элементов или атрибутов, которые вы проиндексировали. Здесь, в этом фрагменте из sphinx.conf, SQL здесь используется для построения индекса. При последующем поиске по индексу будет возвращен product.id, а при поиске text2search.

sql_query = SELECT id, CONCAT_WS( ' ', field1, field2 ) as text2search FROM product

Если ваши документы / продукты находятся в одной таблице базы данных, это очень просто. Вы можете восстанавливать и воссоздавать свою структуру данных на стороне базы данных, когда ей предоставлены первичные ключи для работы.

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

...