Полнотекстовый поиск Postgresql
У нас есть около 20 миллионов записей в базе данных Postgresql. Один из столбцов-это html-документ, хранящийся в виде текстового типа данных. Мы хотим использовать этот столбец в функции поиска. Мы преобразовали html - контент в открытый текст и создали токены с помощью to_tsvector. Мы реализовали полнотекстовый поиск по этому столбцу токенов.
1. Когда мы ищем с одним словом и логическими операторами, он возвращает результаты, как и ожидалось. Пример:
("Jack" AND ("Jill" OR "Tom") )
2. однако, когда мы используем две или более адресных поисковых строк с логическими операторами, то это не дает ожидаемого результата. Пример: для строки поиска
("Jack Jill" OR "Jack Tom"), он не ищет “Джек Джилл” вместе, но если он находит эти два слова в одном тексте, он возвращается. Здесь, если в столбце есть “Джек Райан Марк Джилл”, он вернет строку, но мы ожидаем, что она вернется только тогда, когда она похожа на “Джек Джилл Райан Марк”.
Не могли бы вы помочь нам решить эту проблему? Дайте нам знать, если вам понадобятся какие-либо детали с нашей стороны.
Что я уже пробовал:
SELECT * from tablename where html_tokens(column where I am storing the token) @@ to_tsquery((ikeyword)