2016-01-18 3 views

ответ

1

Ну, если вы действительно хотите использовать сфинкса, может, возможно, сделать идентификатор в поддельной ключевое слово, поэтому можно использовать его в 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 (который не учитывает слова)

+0

Вау! Это решает мою проблему! Большое спасибо! –

0

На самом деле довольно сложно сделать, потому что вы смешиваете строковый поиск (LIKE, который будет MATCH) - с фильтром атрибутов.

Предлагает два отдельных запроса, один для сфинксов для текстового фильтра. И фильтр IN просто работает непосредственно в базе данных (mysql?). Объедините результаты в приложении.

+0

Благодарим за ответ. Но я не думаю, что это сработает по этому сценарию. –

Смежные вопросы