поискового вектора Вот проблема:PostgreSQL полнотекстового поиск: Cant получить частичное совпадение
У меня есть таблица в PostgreSQL с адресами в виде простого текста и tsvectors. И я пытаюсь найти запись адреса в таком запросе.
SELECT * FROM address_catalog
WHERE address_catalog.search_vector @@ to_tsquery('123456:* & Klingon:* & Empire:* & Kronos:* & city:* & Matrok:* & street:* & 789:*')
Но проблема в том, что я ничего не знаю об адресе в запросе. Я не могу определить, где находится страна, город или улица в входящей строке. Я не знаю, какой порядок слов имеет адрес, или он содержит лишние слова.
Я могу искать только страны и города, но если входящая строка содержит улицу, индекс или что-то еще, поиск ничего не возвращает из-за конъюнкции всех векторных токенов. В то же время я просто не могу удалить некоторые строковые части или использовать дизъюнкцию, потому что я никогда не знаю, где в строке есть дополнительные слова.
Итак, есть ли способ построить tsquery, чтобы вернуть несколько лучших совпадений для входящей строки? Или, может быть, частичные матчи? Когда я попытался заставить его использовать ИЛИ вместо И всюду в tsquery, он вернул мне почти всю базу данных. Мне нужно пересечение векторов ... в postgresql.