【问题标题】:Search engine for nested grouping / facets嵌套分组/方面的搜索引擎
【发布时间】:2014-02-13 11:16:59
【问题描述】:

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

为简单起见,假设我的模型中有“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、Sphinx 或其他可以与 rails 结合的搜索引擎中是否可行?

我考虑将牧群属性复制到绵羊中——至少对于索引而言——但这似乎会产生巨大的开销。

【问题讨论】:

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


    【解决方案1】:

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

    Sphinx 也有方面,虽然我没有使用它,所以不能确切地说它们是否可以工作,但从文档来看似乎与 Solr 没有太大区别。

    另一个选择是 ElasticSearch。作为 Solr,它基于 Apache Lucene 引擎构建。当我决定使用 Solr 时,Elastic 的功能并不完整,但现在他们已经赶上了,我在博客中读到了关于它的非常好的内容。正在考虑切换项目。

    有一些 NoSQL 解决方案的工作方式类似于构面。尽管它们可能缺少那些全文搜索引擎的一些其他功能。

    【讨论】:

    • Thorsten 做对了——你想做的事情肯定会在 Solr/Sunspot 和 Sphinx/Thinking Sphinx 上都可以实现,而且我相信 ElasticSearch 也很简单。选择你喜欢的图书馆,然后试一试。
    猜你喜欢
    • 1970-01-01
    • 2016-09-01
    • 2022-10-08
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多