Сквозной поиск по сайту и вики
Полнотекстовый поиск уже работает в API — осталось довести его до строки поиска на сайте и сшить с выдачей вики.
Половина работы сделалась мимоходом. Когда контент переехал в PostgreSQL, поиск
приехал вместе с ним: у записей есть индекс tsvector с русской морфологией, и
API умеет искать прямо сейчас — ?q=промпты находит и «промптов», и «промптам».
Раньше здесь был Pagefind: он индексировал статику после сборки, серверная часть не требовалась. С переездом на базу необходимость отпала — искать по таблице проще и честнее, чем по выгрузке рядом со страницами.
Что осталось:
- строка поиска в шапке и страница выдачи с подсветкой совпадений;
- ранжирование по релевантности, а не по дате: сейчас выдача отсортирована хронологически, для поиска это неправильно;
- вики. У Wiki.js собственный поиск и своя база, поэтому единая выдача — это либо периодический экспорт страниц вики в наш индекс, либо два запроса и склейка результатов на лету.
Последний пункт и есть основной вопрос. Экспорт даёт одну выдачу и одно ранжирование, но данные отстают. Склейка на лету всегда свежая, зато ранжировать два источника в общем списке нечем: их оценки релевантности несравнимы.