嵌套分组/方面的搜索引擎

时间:2014-02-13 11:16:59

标签: ruby-on-rails solr sphinx thinking-sphinx sunspot

我正在尝试为我的Rails 4应用选择正确的索引/搜索解决方案。到目前为止,我已经考虑过Sunspot(Solr)和Thinking Sphinx(Sphinx),但是从阅读两者的文档来看,我不确定它们是否能满足我的用例。

为了简单起见,让我说我的模型中有“羊”和“牧群”。每只羊都属于一只牛群。

我想向我的用户展示一个查询界面,该界面允许指定绵羊牧群的标准。搜索结果应按群进行分组。标准的一部分应该作为方面起作用,向用户提供信息,当他为一个方面指定某个值时,他会找到多少只羊/牛群。

QUERY INTERFACE

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,Sphinx或另一个可以与rails组合的搜索引擎中使用吗?

我认为将羊群的属性复制到羊群中 - 至少对于索引而言 - 但似乎这会产生一个enormeus开销。

1 个答案:

答案 0 :(得分:2)

是的,可以在Solr中完成。最有可能将羊群属性添加到绵羊中是更好的方法,因此您可以在单个查询中执行此操作。无论如何,您都需要一些开销才能将数据导入Solr,因此您可以将所有内容放在一个索引中。我已经使用Solr faceting来解决更复杂的问题。

狮身人面像也有方面,虽然我没有使用它,所以不能准确地说出它们是否可行,但从文件来看,似乎与Solr没有太大区别。

另一种选择是ElasticSearch。作为Solr,它基于Apache Lucene引擎。当我决定Solr Elastic没有全功能时,但是现在他们已经赶上了,我在博客中读到了非常好的东西。实际上考虑改变项目。

有一些NoSQL解决方案与facet类似。虽然他们可能缺少那些全文搜索引擎的其他功能。

相关问题