Facet Filter Demo
我正在使用FOSLastica创建一个带有Elasticsearch+Symfony2的搜索页面。我已经设置好了存储库和模型转换以及分页。
我有几个聚合的地理位置搜索,它们在之后
距离范围
- <5英里
- 25英里
- 50英里
- 100英里
两点之间的持续时间
- 30分钟
- 1小时
- 2小时
- 3小时
类别
- 汽车
- 卡车
- 自行车
- 悬停板
位置:地理点(默认由国家/地区设置)
问题
用户将多次点击聚合来过滤他们的数据以缩小数据范围。跟踪用户活动的聚合的最佳方式是什么?
如何显示控制器和服务方法之间的发送和接收过滤器聚合?
最好只按会话跟踪所有内容吗?
由于默认的Elasticsearch响应文档不包含提交的查询,因此您需要跟踪MVC应用程序中的筛选器选择状态,以便正确呈现筛选器控件。
一些选项:
- 过滤器编码为页面上的表单元素(可能隐藏)。表单可以通过Ajax发布
- 编码到url中的过滤器(添加了可添加书签/可共享搜索的好处)
- 存储在会话中的筛选器(不确定为什么要这样,但这是可能的)
一旦您提交了搜索请求,您的控制器调用Elasticsearch,现在负责将用户的过滤器选择状态传递给Elastica(和也与搜索结果一起返回视图)
这种从搜索控制器回显过滤器状态的非常有用,尤其是当您需要重新绘制包含搜索过滤器的页面部分时。