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

Я использовал Ferret в качестве своего полнотекстового поискового движка в небольшом проекте, над которым я работаю.

Благодаря документации и нескольким примерам в Интернете, я смог собратьГенератор облака тегов, использующий полнотекстовый индекс для помощи в генерации облака тегов с использованием метода IndexReader.terms.

До сих пор он работал довольно хорошо, когда я хочу получать данные терминов на основе результатов поиска.

Например, если пользователь ищет «торт», я хочу показать ему облако тегов терминов, используемых в связи с термином «торт».

Я искал примерыгде метод terms может использоваться в связи с набором результатов поиска или аналогичным?

В настоящее время я использую следующий метод для создания списка тегов:

reader = Ferret::Index::IndexReader.new(Scrape.find_last_index_version)
terms = []
reader.terms(:all_quotes).each do |term, doc_freq|
    terms << [term, doc_freq]
end

Приветствия.

1 Ответ

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

Это больше похоже на частотную диаграмму терминов (например, на слово), чем на облако тегов? Или это в поле тега? В любом случае, индекс не отслеживает частоту терминов в каждом возможном подмножестве документов (например, результаты поиска), поэтому этот метод не будет быстрым, даже если он существует. Для одного документа вы можете получить TermFreqVector и предоставить предлагаемые документы, которые хорошо подходят для других часто встречающихся терминов в этом документе. Таким образом, вы можете взять некоторые из лучших результатов, взять векторы терминов из каждого и просто сложить их, но эти агрегатные функции не существуют изначально (они обычно стараются не помещать медленные операции там).

...