Как ранжировать результаты поиска коротких строковых списков
-
16-10-2019 - |
Вопрос
У меня есть дерево продуктов, которое я хотел бы найти, чтобы найти соответствующие узлы. Как лучше всего оценить результаты?
Вот пример подзыска после поиска «Apple»:
|-- apple pie
|-+ apples
| |-- cooking
| |-+ eating
| |-- average
| |-- Granny Smith
| |-- Golden Delicious
|-- pork and apple casserole
В настоящее время я рейтинг, основываясь на том, какие результаты приходят самыми ранними на полном названии каждого листа, так что набор результатов будет выглядеть как:
0 Apple pie
0 Apples, cooking
0 Apples, eating, average
0 Apples, eating, Granny Smith
0 Apples, eating, Golden Delicious
2 Pork and apple casserole
Там, где звание является индексом первого матча, понизите звание, тем лучше.
Я хотел бы объединить спички, чтобы я не отображал полную подрисунку в начальном поиске, например:
Apples... (4)
Apple pie
Pork and apple casserole
Чем очевидным способом ранжирования их является подсчет количества подходящих листьев, чем выше звание, тем лучше матч.
Но я не уверен, как объединить эти рейтинги, так как один из них больше, а один-меньше. Есть ли стандартные способы объединить такие рейтинги? (Я не уверен, что искать, поэтому Google дает мне результаты о поисковой оптимизации и поиске веб -страниц, которые, похоже, не применяются.)
Решение
Хотя я действительно не знаю, как результат лучше. Я предполагаю, что то, что вы делаете, хорошо (и, возможно, лучшее, возможно, вы можете получить). Всего одна нота, чтобы быть более точной, вы должны ранжировать узел $ U $ в зависимости от размера поддерева, укоренившегося в $ U $ (не на количестве листьев в этом поддере или детях $ U $). Это лучше (и более общее).
Но один из способов решить подобные проблемы в целом - дать счет каждому узлу в вашем дереве (вес). Чем выше оценка, тем больше он будет оцениваться выше. Тогда вы будете искать поддерево с наибольшим весом. Вы вычисляете это, суммируя веса всех узлов в поддере.
Пример весов (просто чтобы помочь вам сделать ставку):
- Близость к поисковому термину (например, расстояние в химингах, или другие метрики [например, посмотрите, как работают алгоритмы предложений по орфографии.
- Если это веб -сайт рецептов, например, узлы могут быть рецептами, а вес узла - это то, сколько «лайков» он получил с веб -сайта.
В заключение, я думаю, что вы делаете, является лучшим приближением. Добавление веса является эвристикой, чтобы дать вам, возможно, лучшие результаты.