Недавно, основываясь на внутренней обратной связи, мы решили сосредоточиться на серии улучшений нашего алгоритма поиска.
Эти изменения уже развернуты на всех сайтах как часть версии Discourse 3.1.0.beta3. После обновления ваш сайт автоматически начнет переиндексацию всего контента для поиска.
В рамках этого обновления добавлены два новых параметра сайта, но они уже установлены в значения, которые показали себя хорошо в наших тестах на meta, поэтому мы не ожидаем, что большинству сайтов потребуется их изменять.
Приоритет точного совпадения термина в заголовке над частичным совпадением
Discourse использует алгоритм stem + префиксное совпадение при поиске. Это иногда приводит к очень неожиданным результатам.
Например: слово redis сводится к redi, поэтому поиск по redis может находить все слова, начинающиеся с redi, такие как redirect и другие.
Добавлен новый скрытый параметр сайта: prioritize_exact_search_title_match, который теперь включен по умолчанию.
До:
После:
Это означает, что если вы помните заголовок и вводите его, вероятность найти именно этот заголовок значительно возрастает.
Снижение максимального дублирования в индексе
Наш алгоритм ранжирования ставит посты с несколькими вхождениями термина выше, чем посты, содержащие термин только один раз. Это означает, что можно «обмануть» поиск, просто многократно повторяя одно и то же слово. Чем чаще вы вводите слово, тем выше оно поднимается в результатах поиска.
Добавлен новый скрытый параметр сайта SiteSetting.max_duplicate_search_index_terms, значение по умолчанию — 6.
После применения этого изменения, если вы введете слово sam 6 раз или 60 раз в посте, его ранг останется прежним. Это устанавливает предел для бонуса, который можно получить за повторения.
Это изменение также положительно сказывается на производительности, так как индекс поиска становится немного меньше.
Различные исправления ошибок
Часть работы была посвящена анализу патологических случаев поиска.
-
Ранее мы снижали приоритет закрытых тем, но забыли про архивированные. Это теперь исправлено.
-
Ранее мы слишком сильно полагались на префиксные совпадения для поисков по «домену». Это означало, что слово
happyне находилоhttps://happy.com, так какhappyсводится кhappi, и префиксное совпадение не срабатывало. Это было исправлено.
Планы на будущее
-
Мы планируем экспериментировать с «нечетким» поиском для автодополнения упоминаний (например, позволять пропускать одну букву).
-
Мы планируем изучить возможность снижения приоритета дублирующихся терминов в заголовках. В настоящее время закрытая тема
hello goodbye helloранжируется выше, чем открытая темаhello world. -
PageRank… в настоящее время мы не учитываем количество входящих внутренних ссылок при ранжировании результатов. Это означает, что иногда темы с огромным количеством ссылок могут ранжироваться ниже редких тем, на которые никто не ссылается. Было бы неплохо учесть это в нашем алгоритме ранжирования.
-
У нас есть открытая инициатива по интеграции с ИИ, и мы можем почерпнуть вдохновение из инструментов, подобных GPT.
Чем вы можете помочь?
Заметили ли вы плохие результаты поиска на meta? Если да, пожалуйста, укажите термин, по которому вы искали, и объясните, почему результаты оказались неудовлетворительными.
Как вам кажутся эти изменения (нейтрально/лучше/хуже)?


