#sphinx
#sphinx
Вопрос:
Предположим, у меня есть индекс sphinx с именем «worldcities» со следующими полями / атрибутами:
атрибут country_id # int
город # текстовое поле
accent_city # текстовое поле
и я запускаю следующий запрос sphinxql:
SELECT * FROM worldcities WHERE country_id = 16 AND MATCH((@(city,accent_city) "New Yor*"))
Как sphinx оценивает запрос?:
Выполняется ли сначала поиск по всем записям, а затем фильтрация результатов по country_id:
«дайте мне все результаты, которые начинаются с «New Yor», и отфильтруйте их по country_id»?
Или он сначала фильтрует по идентификатору страны и выполняет поиск по результатам: «дайте мне все результаты с country_id = 16, а затем выполните поиск в них»?
Надеюсь, я ясно выразился
Ответ №1:
«дайте мне все результаты, которые начинаются с «New Yor», и отфильтруйте их по country_id»
этот.
Сначала выполняются полнотекстовые запросы. Затем фильтры «исключают» необязательные совпадения.
кстати, в вашем запросе отсутствуют некоторые кавычки, должно быть
MATCH('@(city,accent_city) "New Yor*"')
Функция сопоставления принимает строку.
Комментарии:
1. да, я понял это в конце концов. Это не производственный запрос, просто пример. Спасибо за ответ.