0

用例處理是這樣的:思考獅身人面像的應用範圍內的搜索,並用結果

我想從讓一個文本框我的用戶搜索,那麼搜索結果頁面上組織由類的結果,實質上。

舉例來說,假設我爲思維獅身人面像配置了以下模型:Post,CommentUser。 (在我的情況下,我有大約10個模型,但爲了清晰起見StackOverflow我假裝只有3個)

當我做了一個搜索類似於:ThinkingSphinx.search 'search term', :classes => [Post, Comment, User]我不確定最好的方式來遍歷結果和建立我的網頁的部分。

我的第一個傾向是做這樣的事情:

  1. 執行搜索
  2. 遍歷設置返回的結果,並做了result.is_a(類類別)根據類類別
  3. ,加1 3陣列的項目 - @match_posts@matching_comments@matching_users
  4. 傳遞這些3個實例變量下我的看法

有沒有更好或更有效的方法來做到這一點? 謝謝!

回答

0

我認爲這歸結爲對使用您的網站的人有用。在所有模型中運行相同的查詢是否有意義?那麼ThinkingSphinx.search可能是最好的,特別是從性能角度來看。

這就是說,你想按他們各自的類來分組搜索結果嗎?然後一些排序是必要的。還是你將每個類的結果分開,比如GitHub搜索?然後分開收藏可能是值得的,就像你已經想到的。

在最基本的層次上,您可以返回所有按照相關性而不是類別排序的內容,然後根據每個結果呈現稍微不同的輸出。案例陳述可能有助於此 - 最好在助手中保留儘可能多的邏輯,和/或可能部分?

+0

嗨,帕特,謝謝你的回答。儘管如此,我對你的第二段和第三段有些困惑。關於第2段,我試圖儘可能簡單地爲我的用戶進行搜索。 1搜索欄,輸入任何內容..然後根據類組織查看結果。即與您的搜索相匹配的文章,與您的搜索匹配的作者姓名,與您的搜索相匹配的評論等等。我想我的問題是如何有效和有效地整理這樣的結果?在第3段中似乎與第2段沒有什麼不同......只是......找出@ view render vs其他地方 –

+0

好吧,所以它聽起來像你想按類名排序,然後按照每個類集內的相關性進行排序。 http://groups.google.com/group/thinking-sphinx/browse_thread/thread/813de527037534bd/6c6d862554d7eb64?lnk=gst&q=sort+by+class#6c6d862554d7eb64有一個如何做到這一點的例子。 – pat

+0

然後我會有一個幫助器,它接受一個參數(一個搜索結果)並呈現特定的部分。當然,你可以命名partials,以便它們符合Rails的期望('app/views/model_name/_model_name.html.erb')並調用'render result'。 – pat

0

如果您只有3種型號可供選擇,那麼您爲什麼不使用model.search而不是ThinkingSphinx.search。這將解決您執行result.is_a?的問題。這意味着更容易處理您想要顯示每個model結果的方式。

+0

這是一個很好的觀點,但有幾點讓我想起來:1-在我的應用程序中,我更喜歡10個模型(更新了最初的問題)。 2-您的方法會導致ThinkingSphinx運行3次索引索引而不是單個查詢嗎?我正在尋找很多文字,所以表演對我來說很重要。謝謝。 –