2012-04-30 85 views
0

我有一個rails應用程序與think_sphinx成功地爲索引/搜索工作。不過,我想知道是否有辦法讓部分工作匹配進行搜索。意思是如果我有一個標題爲「最佳報告」的報告,並且我搜索了「最佳」報告,它會返回該報告。Thinking_Sphinx部分工作匹配

回答

2

我建議你嘗試與思考獅身人面像的通配符搜索。

基本上有三種設置,統治通配符搜索世界:* enable_star * min_prefix_len * min_infix_len

  • min_prefix_len =>最小單詞前綴長度索引
  • min_infix_len =>中綴索引允許執行通配符 通過搜索「啓動*」,「*結束」以及「中間」通配符

注:*爲必填enabled_star加上行吟詩人之一v提供兩種用於使前綴或者綴搜索設置(不可兼得,至少在相同的索引)*

例如:

型號:

class Comment < ActiveRecord::Base 

    #define the indexes for your searchable attributes 

    define_index do 
    indexes :comment 
    enable_star: true 
    min_infix_len: 3 
    has created_at,updated_at 
    end 

end 

控制器:

class CommentsController < ApplicationController 

    def search 
     @result = ThinkingSphinx.search "*#{params[:id]}*" ,:classes => [Comment,....] 

    end 
    end 

然後重建thinking_sphinx:

  1. 耙TS:停止
  2. 耙TS:索引
  3. 耙TS:啓動

(或)

  1. 耙TS:重建

上面的示例將導致以下情況:

  • Comment.search 「最佳*」

  • Comment.search 「最佳衆議員*」

  • Comment.search 「衆議員」 ..等

如果有任何疑問感覺免費,請問我.......