Comments 4
Долбанный псих Очень занимательно, спасибо за обзор.
А некоторые считают наличие join в запросе сложным запросом.
Интересно бы увидеть как постгрес может помечать слова которые послужили триггером для нахождения, и что делать с мультиязычными данными? Токенизировать в одну колонку все языки, или создавать по колонке на язык?
"Например, слова «hello» и «helo» имеют много общих триграмм" - я насчитал ровно одну общую (hel). Не сильно много, или я что-то не так понял.
Соглашусь с автором - для не сильно сложных случаев поиска PostgreSQL хватит. Я в некоторых своих проектах текстовый поиск делал прямо на СУБД, несмотря на фантазии заказчика о хитром нечётком поиске. В итоге получалось, что обычного поиска по LIKE с нормализацией запроса (замена похожих символов на один, перевод в латиницу, вырезание посторонних символов) хватает за глаза.
Разработчики любят пихать какой-нибудь ElasticSearch для любого поиска, не представляя, в какой ад может превратиться поддержка поискового индекса в актуальном состоянии. При том, что продвинутый поиск может никогда и не понадобиться.
Postgres как поисковый движок