2015-12-16 2 views
0

Я пытаюсь добавить НЕ кондиционировать к поиску Сфинкса:

!($|/) NEAR/3 (HR) 

однако Sphinx возвращает «неожиданный $» или «неожиданная /», так я предполагаю, что те символы, используемые в качестве синтаксиса запросов. Как я могу сказать Sphinx, чтобы этот поиск использовался в качестве символов?

ответ

1

Вы должны избежать этих символов с использованием \\:

select * from my_index where match('!(\\$|\\/) NEAR/3 (HR)'); 
+0

@BarryHunter. Это ускользает от них без ошибки, но не исключает таких результатов, как «$ 90 hr», и на самом деле, если я перейду на (\\ $ | \\ /) NEAR/3 (HR) другими словами без! он все еще находит это. Таким образом, похоже, что он ускользает от $ и /, но до такой степени, что они не распознаются, а не в точке, которые распознаются как символы. – user3649739

+0

Хорошо помните, что сфинкс соответствует только целым словам. Но также не уверен, что ваш запрос заставит sphinx «не» что-то рядом. Я думаю, вы хотите '! (Слово NEAR word)', а не '! Word NEAR word' – barryhunter