1

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

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

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

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

4

1 回答 1

6

是的,您应该使用 ES 或 Solr。原因:主要是性能和轻松更改(想想配置)“刻面类型”的能力。

刻面是一项不小的壮举,尽管您可以使用 RDBMS 来完成,但要快速完成需要经过深思熟虑。如果您可以使用 Solr / ES (+ Lucene) 团队为优化它所花费的大量时间,为什么还要自己做呢。

至于我提到的“刻面类型”:

  1. 也许你想做分层刻面。选择价格类别 > 显示较小的价格类别。如何分桶:固定范围、均匀分布等。 Solr / ES 从配置中提供这些选项。
  2. 也许您可以使用带有最小/最大句柄的滑块来实现价格分面?滑动时是否要显示酒店的 nr(直方图/Solr / ES 中的 facetstats)
  3. 虽然您已经了解价格,但也许您仍然想知道价格滑块的最小值和最大值,就好像您没有过滤价格一样。如果您希望能够按比例绘制滑块手柄,则需要这样做。(作为考虑从 Solr 切换到 ES 的一部分,请参阅我关于 SO 的问题:Elasticsearch: exclude filters while faceting possible?(就像在 Solr 中一样
  4. 面对星星?如果用户选择该星(再次直方图/统计数据),也许您想显示每个星面的最佳价格

说真的,甚至不要考虑使用 RDBMS 进行上述操作。你会发疯的。

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

其他问题,尽管问。

于 2012-08-07T20:11:45.847 回答