2012-04-26 107 views
2

我不想在一組類上進行全局搜索,但我想指定它應該使用的索引數組,這可能嗎?我已經搜索並嘗試了不同的解決方案,但沒有運氣。使用Thinking Sphinx進行多索引全局搜索

這工作正常(儘管一個索引)。

ThinkingSphinx.search "query", :classes => [Foo, Bar], :index => "my_foo_index" 

這將引發一個錯誤:

ThinkingSphinx.search "query", :classes => [Foo, Bar], :index => "my_foo_index,my_bar_index" 
> ThinkingSphinx::SphinxError: distributed index 'my_foo_index' in multi-index query found 

至於這樣做:

ThinkingSphinx.search "query", :classes => [Foo, Bar], :index => ["my_foo_index", "my_bar_index"] 
> NoMethodError: undefined method `force_encoding' for ["my_foo_index", "my_bar_index"]:Array 

我也試過來命名型號指數一樣,喜歡上都Foo- 「my_index」模型和酒吧模型,但當重建索引時出現此錯誤:

ERROR: section 'my_index_core_0' (type='source') already exists in /dev/config/development.sphinx.conf line 116 col 1. 

我能想出的唯一解決方案是對每個模型進行多次搜索,然後合併結果。這一點吹一點,因爲我會失去在搜索的相關性...

任何想法?

回答

7

嘗試以下操作:

ThinkingSphinx.search 'query', :classes => [Foo, Bar], 
    :index => 'my_foo_index_core,my_bar_index_core' 

如果你有增量,增加my_foo_index_deltamy_bar_index_delta的名單。這將避免分佈式指數。

+0

感謝帕特,這個伎倆,儘管它可能不會像人們希望的那樣直接向前:)也非常感謝你提供了一個真棒插件,保持良好的工作! – boena 2012-04-27 14:44:58