2013-10-10 84 views
0

我正在使用ThinkingSphinx進行通過Book模型的簡單搜索。我book_indexes.rb看起來是這樣的:獲取不基於整個索引值的搜索結果

ThinkingSphinx::Index.define :book, with: :active_record do 
    indexes title 
    indexes author 
    indexes publishing_date 
    indexes isbn 
end 

和控制器動作看起來像這樣

def index 
    @books = Book.search(params[:search]) 
    end 

到目前爲止一切正常,因爲它應該是,當我鍵入「聖經」,它返回本書名爲「聖經」 。但是有可能獲得不是基於整個標題的搜索結果嗎?用更簡單的話來說,當我搜索「圍脖」或「b」時,我希望得到「聖經」。

編輯

我thinking_sphinx.yml現在是:

development: 
    enable_star: true 
    min_infix_len: 1 
    min_prefix_len: 1 

和控制器動作:

@books = Book.search("*#{params[:search]}*") 

,但它仍然工程一樣的,只是沒有任何查詢,只需加載後頁面,@books是零

+0

你已經運行'rake ts:index'或'rake ts:rebuild'? – claptimes

+0

nope,會在一分鐘內嘗試 – Leo

+0

是的,這就是我需要做的,我也刪除了來自think_sphinx.yml的min_infix_len:1,因爲它引發了一個錯誤,說前綴和infifes不能同時啓用。 thx – Leo

回答

1

您正在尋找min_infix_len屬性。你可以設置你的thinking_sphinx.yml這樣的配置設置:

development: 
    #.... truncated .... 
    enable_star: true # Allow wildcard searching 
    min_infix_len: 3 # Indexes on values starting at 3 letters like "bib" 
0

思維獅身人面像允許你使用通配符所以當你像這樣搜索:

@books = Book.search("*#{params[:search]}*") 

它也將工作,當你不使用整個單詞!

+1

你需要配置enable_star和min_prefix_len才能工作 - 但這並不難。這兩個設置都在文檔的這個頁面上提到:http://pat.github.io/thinking-sphinx/advanced_config.html – pat

+0

我更新了我的問題,你可以看一下嗎? – Leo