分面搜索:ElasticSearch / Solr还是简单的数据库查询?

时间:2012-08-07 14:11:55

标签: database search solr elasticsearch

原谅这个超级基本问题,来自搜索新手。

我想实现一个使用分面搜索的网站。例如,它是一个拥有酒店数据库的网站,我希望允许用户搜索价格范围内的酒店,游泳池有三星或四星。

显然,我可以通过简单的数据库查询将结果返回给用户。

我应该使用ElasticSearch或Solr来实现它而不是使用数据库查询吗?如果是这样,为什么?

1 个答案:

答案 0 :(得分:5)

是的,您应该使用ES或Solr。理由:主要是性能和轻松改变(思考配置)“刻面类型”的能力。

分面是一个不小的壮举,尽管你可以用RDBMS做到这一点,但要快速完成它需要艰难的思考。为什么要自己使用Solr / ES(+ Lucene)团队努力优化它的数小时。

至于我提到的'刻面类型':

  1. 也许您想要进行分层分面。选择价格类别>显示较小的价格类别。如何划分:固定范围,均匀分布等.Solr / ES在配置中提供这些选项。
  2. 也许你用一个带最小/最大手柄的滑块实现价格面?你想在滑动时显示nr酒店(直方图/ facetstats在SOlr / ES中)
  3. 虽然您已经面对价格,但也许您仍然想知道价格滑块的最小值和最大值,就好像您没有过滤价格一样。如果您希望能够按比例绘制滑块手柄,则需要这样做。 (请参阅我关于SO的问题,作为考虑从Solr转换到ES的一部分:Elasticsearch: excluding filters while faceting possible? (like in Solr)
  4. 星星刻面?如果用户选择那颗星(或者直方图/统计数据),也许你想要显示每颗星的最佳价格
  5. 说真的,甚至不考虑使用RDBMS进行上述操作。你会疯了。

    希望有所帮助,是的,我熟悉该域名:)

    其他问题,请问。