алгоритм ранжирования результатов поиска на основе предыдущего использования - PullRequest
0 голосов
/ 16 декабря 2009

Прежде всего, нет, я не спрашиваю, пожалуйста, скажите мне, как Google построен в двух предложениях. То, что я спрашиваю, немного отличается. У меня есть база данных, заполненная текстовыми данными, которые вводят пользователи. Мы также даем им функциональность для поиска этих данных позже. Проблема в том, что мы сейчас выполняем простой полнотекстовый поиск и возвращаем результаты в любом порядке. Я хотел бы вернуть результаты, основываясь на весе, весе того, как часто пользователь что-то печатает. Например, пользователь может ввести следующее:

"Foo" «Бо» «Боб» «Боб» «Боб» «Бо» "Foo2"

На основании приведенных выше данных, поиск по 'b' должен вернуть bo и bob, но bob должен быть указан первым. Это наиболее актуально в зависимости от использования.

Любопытно, какой алгоритм я должен исследовать, чтобы построить это эффективным способом? Какие-нибудь книги, основанные на общих веб-алгоритмах (я знаю, что это не только веб-специфические), которые объяснят это?

Ответы [ 3 ]

0 голосов
/ 16 декабря 2009

Я не знаю, как бы вы сделали это в контексте базы данных, но вот один из способов сделать это:

Используйте trie для хранения каждого уникального слова и счетчика того, как часто оно использовалось. Когда ваш пользователь начинает печатать, три позволяет эффективно захватить всю строку с заданным префиксом, который затем можно отсортировать, используя количество слов в качестве ключей.

0 голосов
/ 31 декабря 2009

Мы используем apache solr для нашего поиска. В этой технологии, я думаю, это обычно делается через бустинг. Так что индексируйте свои данные и каждый день или около того добавляйте отдельные документы на основе пользовательских запросов.

0 голосов
/ 16 декабря 2009

есть различные алгоритмы поиска.

Вот небольшой ориентир для некоторых из них: http://en.wikipedia.org/wiki/Search_algorithm

Я не эксперт в этой области, поэтому я не могу рекомендовать конкретного.

...