нечеткий поиск в полнотекстовом поиске - PullRequest
0 голосов
/ 02 сентября 2018

Я использую postgresql для полнотекстового поиска, и я обнаружил, что пользователи не будут получать результаты при наличии орфографических ошибок. Я хочу использовать нечеткий поиск и полнотекстовый поиск вместе. Например, я не смог объединить индексы Trigram и полный текст поиск.

Как лучше всего обрабатывать слова с ошибками в полнотекстовом поиске Postgres?

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Я бы посоветовал вам использовать либо полнотекстовый поиск, либо совпадение триграмм, но не пытайтесь их смешивать.

Исходя из этого требования, я бы сказал, что подобие триграмм лучше всего подходит.

Если вы не получите результат с помощью оператора подобия %, у вас есть два варианта:

  1. Понижение порога подобия pg_trgm.similarity_threshold.

  2. Запросите другой способ, чтобы получить наилучшие совпадения, однако & bdquo; дальний & rdquo; они:

    SELECT * FROM product ORDER BY katadi <-> ' pen' LIMIT 10;
    

    Я думаю, это было бы лучшим решением.

0 голосов
/ 03 сентября 2018

Чтобы использовать нечеткий поиск, необходимо убедиться, что расширение присутствует.

CREATE EXTENSION IF NOT EXISTS fuzzystrmatch;

Проверьте документацию, но вы применяете поиск как;

SELECT levenshtein('GUMBO', 'GAMBOL');

Вы могли бы поместить результат в столбец, чтобы упорядочить? Вам также следует изучить "regexp_replace", чтобы исправить некоторые из ваших известных орфографических ошибок

...