Подстановочные знаки сфинкса не соответствуют всем ожиданиям - PullRequest
0 голосов
/ 27 июня 2019

мой запрос:

select * from words where match('*а$') LIMIT 1000000 OPTION max_matches=1000000;

Я хочу найти все слова, заканчивающиеся на «а»; но сфинкс возвращает только часть этого - не все

моя конфигурация:

index words
{
        source = words
        path = /var/www/sphinx/words
        docinfo = extern
        mlock = 0
        #min_word_len = 1
        #morphology = stem_ru
        charset_table = 0..9, A..Z->a..z, _,-, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
        min_infix_len = 1
        index_exact_words=1
        expand_keywords=0
        dict=keywords
}

в результате только слова, которые имеют точное «а» в конце:

word a
word-a
word(a)
word2 a
etc...

Но мне нужно точное совпадение, например, регулярное выражение "a $" - wordA, wwwordA, wordsA

1 Ответ

1 голос
/ 01 июля 2019

$ - это оператор конца поля - он вернет совпадение, если слова являются последним (или единственным) одним словом в поле. Если вам нужны все слова, заканчивающиеся на a, вам нужно только MATCH('*a').

...