mysql - 基本的全站搜索方法?

标签 mysql search methodology

我想为一个所有内容(或至少是可搜索的内容)都存储在数据库中的网站构建一个全站范围的搜索。我能想到的最好的方法如下:

  1. 用户输入搜索查询 - “棕色真皮沙发”。
  2. 将查询拆分为一个数组。
  3. 对数组的每一行使用 LIKE %$val% 搜索数据库 (mysql)。
  4. 将结果加载到一个数组中,然后根据在内容中找到的搜索词的数量为每个结果 +1 分。
  5. 如果结果中的字词数量相匹配,则按特定页面的浏览量排序 - 这是受欢迎程度的指标。

通过页面标题中的搜索词为结果赋予更多值(value),或者允许用户使用引号搜索多词短语等操作不会太复杂。

除了性能方面的考虑 - 限制返回的结果、缓存等,还有什么我需要考虑的或更好的方法来解决这个问题(除了实现 Google 搜索框之外)?

最佳答案

不确定极端参与的阈值是多少,但我可能会先搜索包含整个字符串数组的匹配项,然后调用您描述的方法。

考虑:将作为单独结果返回的两部分内容。

结果 1:

____ brown ____ ____ _____ ____ brown ____ ____ ______ ___ brown _____ ____ brown

结果 2:

brown leather sofas _____ _____ ______ ____ _____.

显然,我们希望返回结果 2 作为最高结果,但是您的方法会为结果 1 分配更多“点”。

关于mysql - 基本的全站搜索方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11245700/

相关文章:

php - 群发邮件ID重复检查

php - 搜索 - 空条件字段

process - 你如何做轻量级的CMMI?

agile - 务实就是敏捷吗?

java mysql 服务器变得越来越慢

php - 如何防止 PHP 中的 SQL 注入(inject)?

android - 搜索包含西里尔数据的 SQLite 数据库

css - 如何在drupal中编辑搜索区域

php - 最佳 PHP 工作流程

mysql - 对数据库中的键进行排序