【发布时间】:2015-05-08 08:31:07
【问题描述】:
我刚刚开始使用 Elastic Search (link) 来处理我在 Laravel 5 中的所有搜索功能。我正在将 Laravel 5 与 MySQL 一起用于数据存储,并在我的作曲家中使用 "elasticsearch/elasticsearch": "~1.0" .json 文件,然后模型观察者在每次模型发生更改时更新 Elastic Search 索引 (this article was very helpful for setting up Laravel observers)。
我可以成功查询我的数据并获得我想要的结果,但我想将结果转换回 Laravel 模型集合,以便我可以使用 Laravel 的关系在搜索结果视图中显示更多数据。
例如:我在 Elastic Search 中查询包含单词“cat”的文章列表,并收到带有一系列命中的典型响应。我想将此数组转换回 Laravel 的文章集合,这样我就可以使用文章的关系来获取并显示所有相关的评论。
我知道存在几个 Laravel 包,它们可能声称可以让这更容易,但我需要做一些非常复杂的搜索/过滤,如果可能的话,我想坚持使用官方的 elasticsearch/elasticsearch 包。
有什么建议吗?
【问题讨论】:
-
我对elasticsearch一点也不熟悉,但我想如果我能帮助您进行头脑风暴,您可能会找到答案。如果弹性搜索返回一个 ID 数组,您可以使用弹性搜索结果
Article::whereIn('id', $elasticsearch_ids)->with('comments')->get()来检索正常的 eloquent 模型。当然这也会导致运行两个额外的查询,所以可能不太理想。 -
@Azeame,这将是一个很好的解决方案,只是它会丢失集合的顺序/排名。