我正在尝试为我的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开销。
答案 0 :(得分:2)
是的,可以在Solr中完成。最有可能将羊群属性添加到绵羊中是更好的方法,因此您可以在单个查询中执行此操作。无论如何,您都需要一些开销才能将数据导入Solr,因此您可以将所有内容放在一个索引中。我已经使用Solr faceting来解决更复杂的问题。
狮身人面像也有方面,虽然我没有使用它,所以不能准确地说出它们是否可行,但从文件来看,似乎与Solr没有太大区别。
另一种选择是ElasticSearch。作为Solr,它基于Apache Lucene引擎。当我决定Solr Elastic没有全功能时,但是现在他们已经赶上了,我在博客中读到了非常好的东西。实际上考虑改变项目。
有一些NoSQL解决方案与facet类似。虽然他们可能缺少那些全文搜索引擎的其他功能。