2014-02-13 199 views
1

我想爲我的Rails 4應用程序選擇正確的索引/搜索解決方案。到目前爲止,我已經考慮過太陽黑子(Solr)和思維獅身人面像(獅身人面像),但是通過閱讀他們兩個的文檔,我不確定他們是否能夠滿足我的用例。嵌套分組/搜索引擎的搜索引擎

爲了簡單起見,假設我在模型中有「Sheep」和「Herd」。每隻羊都屬於一個羣體。

我想給我的用戶提供一個查詢界面,允許指定羊羣羣的標準。搜索結果應按照羣體分組。部分標準應該作爲方面工作,向用戶提供信息,當他爲一個方面指定某個值時,他會找到多少羊/牛羣。

查詢界面

Sheep criterions 
    Name: _____________ 
    Color 
     [ ] Black (14) 
     [X] White (36) 

    Age: Between [ ] and [ ] 

Herd criterions 
    Description contains: _____________ 
    Country 
     [ ] Australia (12) 
     [ ] Germany (10) 
     [ ] Sealand (1) 

成績

+ Herd 37 (Australia) with 12 matching sheep (15 total) 
+ Herd 10 (Germany) with 20 matching sheep (27 total) 
- Herd 42 (Sealand) with 1 matching sheep (1 total) 
    Sad lonely white sheep 
+ Herd 11 (Germany) with 3 matching sheep (7 total) 

所以我想通過牛羣做面搜索上的羊,它們分組,然後做對結果的另一面搜索。在Solr,獅身人面像還是另一個可以與軌道結合的搜索引擎中,這是可能的嗎?

我認爲複製牛羣屬性到羊 - 爲索引至少 - 但似乎,這將產生一個enormeus開銷。

回答

2

是的,可以在Solr中完成。最有可能將羊羣屬性添加到羊羣中的方式會更好,因此您可以在單個查詢中執行此操作。無論如何,將數據導入Solr會有一些開銷,因此您可以將所有內容都放在一個索引中。我已經使用Solr面對更復雜的問題。

獅身人面像也有面,雖然我沒有使用它,所以不能準確說出他們是否會工作,但是從文檔似乎有到Solr沒有什麼大的差別。

另一種選擇是ElasticSearch。作爲Solr它建立在Apache Lucene引擎上。當我決定選擇Solr Elastic時,它的功能並不全面,但現在他們已經趕上了我在博客中閱讀它的很好的一面。其實考慮切換項目。

有些NoSQL解決方案的工作類似於方面。儘管他們可能缺乏這些全文搜索引擎的其他功能。

+1

托爾斯滕拿到了它的權利 - 你想做的事肯定將有可能與兩者的Solr /太陽黑子和獅身人面像/思考獅身人面像什麼,我敢肯定,這是很容易與ElasticSearch了。選擇你喜歡的圖書館,並給它一個旋轉。 – pat