как я могу написать этот запрос на sphinx select * from vehicle_details where make LIKE "%john%" OR id IN (1,2,3,4)
, может ли кто-нибудь мне помочь? Я много искал, и я не могу найти ответ. пожалуйста, помогитеПреобразование запросов Mysql в Sphinx
ответ
Ну, если вы действительно хотите использовать сфинкса, может, возможно, сделать идентификатор в поддельной ключевое слово, поэтому можно использовать его в MATCH, например
sql_query = SELECT id, CONCAT('id',id) as _id, make, description FROM ...
Теперь у вас есть на основе ключевого слова id
вы можете соответствовать на.
SELECT * FROM index WHERE MATCH('(@make *john*) | (@_id id1|id2|id3|id4)')
Но читать на сфинкс соответствия ключевых слов, в качестве сфинкса по умолчанию соответствует только целым словам, то Вам необходимо включить часть согласования слов с групповыми символами (например, с min_infix_len), так что вы можете получить близко к простому LIKE% ..% match (который не учитывает слова)
На самом деле довольно сложно сделать, потому что вы смешиваете строковый поиск (LIKE
, который будет MATCH
) - с фильтром атрибутов.
Предлагает два отдельных запроса, один для сфинксов для текстового фильтра. И фильтр IN просто работает непосредственно в базе данных (mysql?). Объедините результаты в приложении.
Благодарим за ответ. Но я не думаю, что это сработает по этому сценарию. –
Вау! Это решает мою проблему! Большое спасибо! –