Postgres Полнотекстовый поиск не возвращает ожидаемых результатов - PullRequest
1 голос
/ 24 января 2020

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

SELECT to_tsvector('english', 'ross, john and carrie' ) @@ to_tsquery( 'ross' ); Правда, то, что я ожидаю

SELECT to_tsvector('english', 'ross, john and carrie' ) @@ to_tsquery( 'ross & john' ); Опять верно и ожидаемо.

SELECT to_tsvector('english', 'ross, john and carrie' ) @@ to_tsquery( 'ross & carrie' ); Неверно?

Если я посмотрю на результат из tsvector, Carrie превратится в Carri

'carri':4 'john':2 'ross':1

Я предполагаю, что это связано с нормализацией english, но я не понимаю, как я все еще могу получить ожидаемый результат.

Ответы [ 2 ]

1 голос
/ 24 января 2020

to_tsvector() и to_tsquery() оба поддерживают дополнительный параметр для конфигурации текстового поиска . Используйте одно и то же для обоих:

SELECT to_tsvector('english', 'ross, john and carrie')
    @@ to_tsquery ('english', 'ross & carrie' );

Если этот параметр не указан, по умолчанию используется значение по умолчанию. Бьюсь об заклад, ваша конфигурация текстового поиска по умолчанию , а не 'english'. Проверьте с:

SHOW default_text_search_config;
0 голосов
/ 24 января 2020

решение было очень простым.

Убедитесь, что в вашем ts_query.

SELECT to_tsvector('english', 'ross, john and carrie' ) @@ to_tsquery('english', 'ross & carrie' );

используется тот же язык.
...