Я подозреваю, что это в основном из-за совпадения всего слова.Сфинкс соответствует целым словам.С 'словами', определенными согласно charset_table http://sphinxsearch.com/docs/current/conf-charset-table.html
, то есть MATCH('@email johndoe')
соответствует только адресам с johndoe
в них как word .по умолчанию charset_table сохраняет .
-
и @
(обычно в электронных письмах!) все как разделители , поэтому будет соответствовать johndoe@domain.com
или email@johndoe.com
, но НЕ email@myjohndoe.com
, индексируемое слово:myjohndoe
не johndoe
Принимая во внимание, что mysql 'LIKE' будет счастлив совпадать с частями слова.например, email like '%johndoe%'
будет johndoesmith@domain.com
, johndoes555@domain.com
и 555@johndoes.com
или что-то еще.Это чистое совпадение подстроки.
Короче может захотеть подправить charset_table
..
-
и @
могут быть символами слова, поэтому электронная почта будет целым словом.
альтернативно может просто включить совпадение слова детали с min_infix_len
.http://sphinxsearch.com/docs/current.html#conf-min-infix-len
тогда может сделать MATCH('@email *johndoe*')
, что даст гораздо более близкие результаты.
в дополнение к min_infix_len
будет expand_keywords
http://sphinxsearch.com/docs/current.html#conf-expand-keywords
, тогда * символы подстановки будут добавлены автоматически, поэтому можно вернуться к MATCH('@email johndoe')