3

分面过滤器演示

我正在使用 FOSElastica 创建一个带有 Elastic search + Symfony2 的搜索页面。我已经完美地设置了存储库和模型转换和分页。

我有以下几个聚合的地理位置搜索

距离范围

  • < 5 英里
  • 25 英里
  • 50 英里
  • 100 英里

两点之间的持续时间

  • 30分钟
  • 1小时
  • 2小时
  • 3小时

类别

  • 卡车
  • 自行车
  • 气垫板

位置:地理位置(默认由国家/地区设置)

问题

用户将有多个聚合单击以过滤其数据以缩小数据范围。跟踪用户激活哪个聚合的最佳方法是什么?

以及如何显示控制器和服务方法之间的发送和接收过滤器聚合?

最好按会话跟踪所有内容吗?

4

1 回答 1

1

由于默认的 Elasticsearch 响应文档不包含已提交的查询,因此您需要跟踪 MVC 应用程序中的过滤器选择状态,以便正确呈现您的过滤器控件。

一些选项:

  • 过滤器编码为页面上的表单元素(可能隐藏)。表单可以通过 Ajax 发布。
  • 过滤器编码到 url(书签/共享搜索的附加好处)
  • 存储在会话中的过滤器(不知道你为什么想要这个,但这是可能的)

提交搜索请求后,调用 Elasticsearch 的控制器现在负责将用户的过滤器选择状态传递给 Elastica(并与搜索结果一起返回视图


这种从搜索控制器返回的显过滤器状态非常有用,尤其是当您需要重绘页面包含搜索过滤器的部分时。

于 2015-12-20T18:47:58.867 回答