【问题标题】:Laravel search engineLaravel 搜索引擎
【发布时间】:2015-04-03 20:06:59
【问题描述】:

我正在使用 Laravel 为移动应用构建 REST api。现在我需要一个搜索引擎。

首先,我从未使用过任何搜索引擎。所以我正在寻找一个易于使用但仍然擅长全文搜索和过滤“位置”的工具

我要执行搜索的表有 1 列 (varchar45) 需要通过全文搜索进行搜索,然后有 5 列 (int) 用于使用“where”语句进行过滤。- 使用 mysql方法。我还在那个表上执行了一个内部连接,以便在生成结果时打印出一些其他的东西。

所以我查看了 sphinxElasticsearch,并决定使用 ES

我看过 Laracon 的 ES 介绍:https://www.youtube.com/watch?v=waTWeJeFp4A

我还看了这个包:https://github.com/freekmurze/searchindex

这给我留下了几个问题:

1) 我是否要删除我的 mysql 数据库并将所有我的数据存储在 ES 中?

2) 如果 1-yes,我还能使用我的 mysql DB 并只使用 ES 来存储索引吗? - 因为我只需要在一个表上执行搜索(总共搜索 5 行)。

3 如果 2 是,我是否仍将当前索引保留在我的 mysql 表中?例如,标题列上的全文索引,另一列上的 FK 和其他 3 列上的索引。

4由于这是我第一次使用搜索引擎,是否还有其他教程/书籍/sn-p 介绍如何将 ES 与 Laravel 一起使用?

提前致谢

【问题讨论】:

  • 就我个人而言,我仍然将所有信息存储在 MySQL 上,我只是将大表存储在 elasticsearch 中,并仅在大数据中使用它来搜索,其中完整索引很慢,或者我需要得到有序的结果。还要记住,将数据存储在某种数据库中会很好。将所有信息存储在 ES 上并不好,因为据我所知,没有快速的方法可以导出 ES 数据并将其导入另一台服务器。如果你选择仍然使用 MySQL 和 ES,只保留你需要的索引(例如,如果你不是通过全文搜索,删除它)。

标签: php mysql search laravel elasticsearch


【解决方案1】:

我最近也在解决同样的问题。 我的意见:

1. 没有。绝对保留您的数据库来存储数据。 ES 不是为替换您的数据库而构建的。它(主要)是搜索引擎。

4. 你可以在这里找到很好的教程:http://www.fullstackstanley.com/read/simple-search-with-laravel-and-elasticsearch(作为起点)。
我建议你也阅读http://www.elasticsearch.org/guide/en/elasticsearch/guide/(更好地理解ES)

【讨论】:

  • 谢谢伊戈尔。然后我在 ES 中只有该表的副本。我之前发现了那个教程,它很棒。我什至在 laracasts 论坛上链接了它,因为我看到很多人询问 ES。现在我面临一个新问题,以防你有时间研究它。首先 - 我无法将 MySql 时间戳映射到 ES,我尝试了 long/timestamp/integers 都不起作用。你可以在stackoverflow.com/questions/28433724/…看到更多信息
  • 第二,ES排序功能有问题。我的查询看起来像 $sort = ['sort' => ['id' => 'desc']]; $posts = Post::searchByQuery($query,null,null,null,null,$sort);
猜你喜欢
  • 1970-01-01
  • 2017-05-15
  • 2017-03-09
  • 1970-01-01
  • 2016-12-31
  • 2011-09-15
  • 2011-07-01
  • 2011-05-21
  • 2011-01-19
相关资源
最近更新 更多