2012-12-27 36 views
2

The documentation for more_like_this演示瞭如何使用它來獲得更多的同類型的內容基於一個條件類似的:是否可以在不同的數據類型中使用more_like_this?

class Post < ActiveRecord::Base 
    searchable do 
    # The :more_like_this option must be set to true 
    text :body, :more_like_this => true 
    end 
end 

post = Post.first 

results = Sunspot.more_like_this(post) do 
    fields :body 
    minimum_term_frequency 5 
end 

我不知道是否有可能返回相關的項目是不同的數據類型。例如,與Articles相關/相似的Videos

我想這取決於是否more_like_this沿着「更Articles類似於此Article基於一套標準」或的流水線作業,如果它沿與此類似Article的「更多的東西線運行根據一組標準「...

我的用例是這樣的,如果我顯示的是Article,我想在頁面上顯示相關內容 - 可能是其他的ArticlesVideos同一類別,或Events等相關主題等。

回答

4

http://sunspot.github.com/sunspot/docs/Sunspot.html#more_like_this-class_method

+(對象)more_like_this(對象,*類型,&塊)啓動一個搜索MoreLikeThis。 MoreLikeThis是一種特殊類型的搜索, 使用全文比較找到類似文檔。與 比較的字段是text字段,:more_like_this選項 設置爲true。默認情況下,更像這樣返回與用於比較的對象類型相同的對象,但可以選擇將類型列表 傳遞給此方法,以返回其他類型的類似文檔。 其他類型。這隻適用於具有共同字段的類型。

例如:

post = Post.first 
    Sunspot.more_like_this(post, Post, Page) do 
    fields :title, :body 
    with(:updated_at).greater_than(1.month.ago) 
    facet(:category_ids) 
    end 

還看到:http://sunspot.github.com/sunspot/docs/Sunspot/Query/MoreLikeThis.html

+1

謝謝!不幸的是,我遇到了[這個bug](https://github.com/sunspot/sunspot/issues/148),它禁止通過'more_like_this'傳遞多個對象 - 所以,在你的例子中'頁面'...或'Sunspot.more_like_this(post,Post,Page,Video,Event)'作爲另一個例子失敗,出現'undefined method'more_like_this_fields''錯誤。 –

相關問題