2012-02-15 5 views
0

Данные, что я имеюмышления матч сфинкса слова

[email protected] - первая запись [email protected] - вторая запись

мне нужно искать, используя адрес электронной почты. У меня есть форумы и пользователи, индексированные в моем веб-приложении.

Первый сценарий

Я держал символ «@» в таблице кодировки, которая работает тонкая проблема является, например, если поиск по ключевым словам, как «[email protected]» он дает мне точный результат, но если i user only 'test' результатов не найдено.

Второй сценарий

Если я не буду держать «@» символ в таблице кодировок. Если я использую «[email protected]» я получаю как результаты и для «теста» и я получаю как результаты

Ожидаемый сценарий

Если я использую всю электронную почту «Киран @ тест. ком»- мне нужно получить только первую запись Если я использую только„тест“- мне нужно, чтобы получить как записи

Попросту туздо что-то вроде„выбери пользователь, где электронная почта как „% ключ поиск%““

Я использую следующий код для поиска

ThinkingSphinx.search params [: search_key] ,: star => Regexp.new ('\ w + @ * \ w +', nil, 'u') (я не хочу рассматривать «@» как разделитель)

Пожалуйста, предложите мне любые параметры, которые я могу передать для достижения ожидаемого результата.

Благодаря Киранов

ответ

0

Посмотрите на смешанном полукокс поддержке

http://sphinxsearch.com/docs/current.html#conf-blend-chars

Или, если вы на самом деле то, что [по электронной почте, как '% ключ поиска%'»] поддержка стиля может быть min_infix_len. (оставляя. и @ в таблице кодировки)

+0

Благодарим за предложение blend_char – user315252

0

Чтобы найти полное письмо, вы можете использовать оператор поиска по фразе.

http://sphinxsearch.com/docs/current.html#extended-syntax

Итак, если бы вы могли определить поисковый запрос, как использование электронной почты, «поиск фразы», ​​в противном случае используйте общий поиск.