Yii2:网站搜索应该如何运作?

时间:2016-09-30 02:15:29

标签: search yii2

在Yii2中实施网站范围搜索的最佳实践方法是什么?

这个问题不是如何具体实现搜索,而是关于使用何种方法。我们应该使用Sphinx吗? Elasticsearch?或者我们是否使用UNION选择将数据导入DataProvider?

假设应用程序正在使用关系数据库来存储数据。我们希望搜索并显示多个不同的模型。例如,我们的数据库包含书籍,作者和商店的表格。当我们搜索关键字时,我们希望显示所有3个表格的结果(按标题或内容匹配书籍,按姓名匹配作者,按名称匹配商店等)。

tutorials显示如何使用Elasticsearch,但假设我们的数据存储在Elasticsearch数据库中,这是没有意义的。我们的数据已存储在MySQL或PostgreSQL中。这是否意味着 我们需要在Elasticsearch数据库中维护我们数据的副本吗?

1 个答案:

答案 0 :(得分:0)

  

在Yii2中实施网站范围搜索的最佳实践方法是什么?

这取决于很多因素,所以我无法为您提供具体的建议。需要考虑的一些因素是:

  1. 您希望通过此搜索获得什么?您的数据库中的每一点都是重要的搜索词吗?
  2. 您是否只需要全文搜索或广泛的分析?
  3. 你有时间或费用限制吗?
  4. 您的(技术)基础设施能否处理您的想法?
  5. 是否值得在项目中引入另一项广泛的技术?
  6. 您是否可以处理其他维护任务来运行此类搜索引擎?
  7. 还有更多......
  8. 在我的内部Yii2项目中使用 PostgreSQL RDBMS,我决定使用名为tsvector的PostgreSQL文本搜索类型。这足以满足我的需求。为什么呢?

    1. 您可以使用Stemming
    2. 支持模糊搜索。
    3. 支持基本排名。
    4. 支持多种语言。
    5. 我强烈推荐此博文Postgres full-text search is Good Enough