Результаты не сильно радуют. Есть таблица buildings, в котором есть колонка с полным адрессом здания. 
                  
                  
                  Создал индекс: CREATE INDEX IF NOT EXISTS idx_buildings_address_string_gin ON buildings USING gin (
                  
                  
                      to_tsvector('russian', address_string)
                  
                  
                                                                                                               );
                  
                  
                  SELECT *
                  
                  
                  FROM buildings
                  
                  
                  WHERE to_tsvector('russian', address_string) @@ plainto_tsquery('russian', 'Лермонтова, 2');
                  
                  
                  Получаю 0 результатов. 
                  
                  
                  Делаю такой же запрос, только через ilike:
                  
                  
                  SELECT *
                  
                  
                  FROM buildings
                  
                  
                  where address_string ilike '%Лермонтова, 2%';
                  
                  
                  Получаю 40 результатов. 
                  
                  
                  Вот примеры адресов: "Кемеровская область - Кузбасс обл, г Новокузнецк, р-н Куйбышевский, ул Лермонтова, 26"
                  
                  
                  "Хакасия Респ, г Абакан, ул Лермонтова, 21"
                  
                  
                  "Хакасия Респ, г Абакан, ул Лермонтова, 27"
                  
                  
                  "Хакасия Респ, г Абакан, ул Лермонтова, 29"
                  
                  
                  "Хакасия Респ, г Абакан, ул Лермонтова, 20"
                  
                  
                  "Хакасия Респ, г Абакан, ул Лермонтова, 25"
                  
                  
                  "Иркутская обл, г Иркутск, ул Лермонтова, 297б"
                  
                  
                  Вопрос такой: Как можно сделать полнотекстового поиска, чтобы он находил адреса, когда им на вход подаются не полные адреса?
                  
                  
                
Вам стоит разбираться / тестировать по шагам (какие получаются tsvector и tsquery, например). См. также: https://www.postgresql.org/docs/current/textsearch-controls.html#TEXTSEARCH-PARSING-QUERIES Ну и да, почему бы не спросить в https://t.me/pgsql ?
Обсуждают сегодня