Как оценивается / интерпретируется запрос sphinxql?

#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. да, я понял это в конце концов. Это не производственный запрос, просто пример. Спасибо за ответ.