首页 > 解决方案 > 在 MySQL 中获得更准确结果的最佳方法

问题描述

我在开发环境上面临两难境地。这是一个三表结构:

  1. 表格内容(文章、新闻...)
  2. 表标签(每篇文章和新闻记录的标签)
  3. 表跳过词(诸如“for”、“get”、“to”之类的词......)

主要思想是根据文本搜索获取内容记录,如何?

首先,根据Skip Words表从文本搜索中删除单词,然后将其余单词与 tags 表匹配。但是,我想给出一个“更聪明”的结果,作为

第二步,我想首先得到与文本搜索的所有剩余单词匹配的文章。这些记录将是主要印刷品。

第三步,如果没有与文本搜索的所有单词匹配的记录,则开始寻找匹配较少单词的记录并记录它们,依此类推,直到我得到一个内容记录列表。

最后一步是显示根据单词匹配量排序的那些记录。所以,考虑到这个过程,我想使用:

  1. 用于从提到的所有步骤加载数据的临时表
  2. 使用具有所有所需逻辑的单个存储过程

以上比较标签,使用“喜欢”条件and field like "word1%" and field like "word2%"

但是,我担心的是性能。这将是主页网站中的一个过程,该网站每小时访问量超过 1700 次。我很感激你能解释你对这种过程的经验(如果有的话)?或者您认为考虑性能的最佳实施方式是什么?

标签: mysqlperformancesearchproceduretemporary

解决方案


使用FULLTEXT索引。它涵盖了您试图重新发明的一些想法。1700/hr 没问题。

WHERE MATCH(col) AGAINST('join*' IN BOOLEAN MODE)

匹配加入/加入/加入和联合。


推荐阅读