Мышление соответствия слова сфинкс - PullRequest
0 голосов
/ 15 февраля 2012

Данные, которые у меня есть:

kiran@test.com - первая запись kiran1@test.com - вторая запись

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

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

Я сохранил символ '@' в таблице кодировок, и это нормально работает, например, если ключевое слово для поиска как 'kiran@test.com' дает мнеточный результат, но если я только «тестирую» пользователя, результаты не найдены.

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

Если я не буду хранить символ «@» в таблице наборов символов.Если я использую «kiran@test.com», я получаю и результаты, и «тест», также я получаю оба результата

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

Если я использую всю электронную почту 'kiran@test.com '- мне нужно получить только первую запись. Если я использую только' test '- мне нужно получить обе записи

В обычном mysql что-то вроде "выберите пользователей, для которых электронная почта похожа на"% search-ключ% '"

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

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

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

Спасибо, Киран

Ответы [ 2 ]

0 голосов
/ 16 февраля 2012

Для поиска полной электронной почты вы можете использовать оператор поиска по фразе.

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

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

0 голосов
/ 15 февраля 2012

Взгляните на поддержку смешанных символов

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

Или, если вы действительно поддерживаете стиль [email like '% search-key%' "], возможно min_infix_len. (Оставляя. И @ в таблице charset)

...