我正在研究为我参与的项目选择搜索服务器的不同选项.搜索服务器用于在Rails中构建的约会网站上提供结果,其中搜索提供所有'匹配' - 魔术.
典型的查询将涉及使用表达式(伪代码)对文档/结果进行排名:
按排名排序:
如果has_image属性为true,则为+50
如果has_boost属性为true,则为+10
如果纬度/经度距离[点] 40英里以内,则为+50
+20如果纬度/经度在80英里以内[点]
- (从属性'age'到30的距离)
过滤:
属性'年龄'在25到35之间
属性"性"等于"男性"
默认情况下,我不需要大多数搜索服务器的全文功能,而且我不需要检索完整的文档 - 只需要一个唯一的ID.
项目的性质为具有以下属性的搜索服务器产生:
Spartial排名
基于自定义函数的结果排名
属性过滤器
可扩展且快速
自由
我找到了Sphinx,Solr和ElasticSearch,但所有这些(据我所见)都是针对全文搜索构建和优化的,ES和Solr都是基于Lucene构建的,我不知道什么会表现最好用于过滤/属性重搜索.
我的问题:
您更喜欢哪些服务器?为什么?
我错过了其他明显的选择吗?
Mauricio Sch.. 5
不知道其他人,但Solr可以做到这一切:
空间排名
你需要每晚构建一个Solr(截至本文撰写时最新的稳定版本,Solr 1.4.1,不包括此功能),据我所知这是一个非常稳定的主干功能.
基于自定义函数的结果排名
Solr有很多函数查询来进行提升.
属性过滤器
这是一种常见的搜索功能.
可扩展且快速
很多大型网站都在使用Solr,证明了它的可扩展性和速度.
自由
Solr是Apache许可的,非常宽松的许可证.
不知道其他人,但Solr可以做到这一切:
空间排名
你需要每晚构建一个Solr(截至本文撰写时最新的稳定版本,Solr 1.4.1,不包括此功能),据我所知这是一个非常稳定的主干功能.
基于自定义函数的结果排名
Solr有很多函数查询来进行提升.
属性过滤器
这是一种常见的搜索功能.
可扩展且快速
很多大型网站都在使用Solr,证明了它的可扩展性和速度.
自由
Solr是Apache许可的,非常宽松的许可证.