У меня есть база данных ресторанов, по которой я выполняю полный -текстовый поиск. Код выглядит примерно так:
SELECT * FROM restaurant WHERE restaurant.search_vector @@ plainto_tsquery(:terms);
И search_vector
определяется так:
alter table restaurant add column search_vector tsvector;
create index restaurant_search_index on restaurant using gin(search_vector);
create trigger restaurant_search_update before update or insert on restaurant
for each row execute procedure
tsvector_update_trigger('search_vector',
'pg_catalog.english','title');
Заметной проблемой в этом поиске является слово барбекю. Оно может быть записано по-разному :барбекю, барбекю, барбекю, барбекю, B -B -Q и т. д. Когда кто-то ищет любой из этих терминов, мне нужно искать рестораны по всем этим терминам.
Из того, что я прочитал в Интернете, кажется, мне нужно изменить словарь (Это будет pg_catalog.english
, верно? ), но я не знаю, как это сделать.