2009-04-15 98 views
5

我正在使用思維獅身人面像插件的獅身人面像。我已經索引了一個名爲地點用下面的代碼(和耙thinking_sphinx:指數命令)模型獅身人面像返回錯誤的搜索結果

define_index do 
    indexes :name 
    indexes city 
    indexes zip 
end 

我獲得在我的控制器的結果與此代碼:

@venues = Venue.search params[:search] 

,我使其作爲JSON。我的問題是,當我打這個網址:

http://localhost:3000/venue/list?search=Baltimo 

我什麼也沒得到。但是當我打這個網址:

http://localhost:3000/venue/list?search=Baltimor 

我得到所有場地位於巴爾的摩市。出於某種原因,一個角色有所作爲。理論上,如果我只用一個字符搜索,我應該在巴爾的摩找到所有的場地 - 'b'

有人知道這裏發生了什麼嗎?

謝謝

回答

6

除非你有enable_star設置爲1,min_prefix_lenmin_infix_len設置爲1或更多,你不會得到B到匹配巴爾的摩(即使如此,我認爲你需要搜索B *獲得比賽)。

這裏發生的事情是,默認情況下,思考獅身人面像告訴獅身人面像使用一個英語詞幹,允許類似字(由字符,而不是意)被認爲是比賽,所以它把Baltimor巴爾的摩在同一個籃子。

如果你想獲得匹配的任何單詞的任何部分,然後你需要把類似的配置在以下/ sphinx.yml:

development: 
    enable_star: 1 
    min_infix_len: 1 
test: 
    enable_star: 1 
    min_infix_len: 1 
production 
    enable_star: 1 
    min_infix_len: 1 

然後停止獅身人面像,重新索引,並重新啓動獅身人面像。一旦你做完了,那麼搜索B *應該返回巴爾的摩。

希望這會有所幫助。

+0

甜,只是發現,在獅身人面像文件...但無法找到它說的把它放在yml。謝謝! – Tony 2009-04-16 00:21:48

+0

有沒有辦法讓他們不必在最後輸入*?像搜索木材將拉起木材和木工,而不必鍵入木材* – Mike 2009-07-08 16:02:44

+0

很好的答案。對於任何在這裏絆倒的人,細節可以在http://freelancing-god.github.com/ts/en/advanced_config.html找到。 需要注意的一點是,將min_infix_len設置爲1可能會降低性能。 – dmonopoly 2012-08-12 03:07:04