【问题标题】:best way to search data-base table for user input keywords?在数据库表中搜索用户输入关键字的最佳方法?
【发布时间】:2010-06-21 20:58:02
【问题描述】:

我想建立一个产品搜索引擎。

我正在考虑使用 google-site-search,但它确实会搜索 Google 对您网站的索引。我不想搜索那个。我想在我的数据库中搜索给定关键字的特定表(所有字段,甚至是用户从未见过的字段)。

但我希望这个搜索尽可能可靠,我想知道是否已经有一些东西可以使用?如果不是自己制作的最好方法是什么?

【问题讨论】:

    标签: php sql mysql search


    【解决方案1】:

    您可以尝试将Sphinx full-text search 用于MySQL。

    这里还有一个来自 IBM 使用 PHP 的 tutorial

    【讨论】:

    • Sphinx 在两端(索引和搜索)都非常快。绝对值得研究。
    • 更不用说Sphinx 也可以解决您的其他问题:stackoverflow.com/questions/3088433/…
    • 谢谢,我尝试安装 sphinx,但我想我是一个 linux 用户太新手,不知道我在做什么,几乎所有其他步骤都给了我一些错误,我不知道这意味着什么或做什么。
    • 谢谢,我现在会尽力弄清楚,如果没有,我会在我获得更多 linux 经验后回来。
    【解决方案2】:

    我会首先关注 MySQL 全文搜索。看看这些链接:

    这是来自第一个链接的 sn-p:

    全文搜索使用 MATCH() ... 反对语法。 匹配() 采用逗号分隔的列表 命名要搜索的列AGAINST 需要一个字符串来搜索, 和一个可选的修饰符 指示要搜索的类型 执行。搜索字符串必须是 文字字符串,而不是变量或 列名。有三种类型 全文搜索:

    【讨论】:

    • 感谢您的信息,如果我无法弄清楚 sphinx,我会使用它。
    【解决方案3】:

    至于已经存在的东西,看看这些:

    【讨论】:

      【解决方案4】:

      SELECT * FROM table WHERE value REGEXP 'searchterm'

      允许您使用许多熟悉的搜索技巧,例如 +、"" 等

      这是 MySQL 的原生函数。无需使用可能更快的新语言或插件,但也有额外的时间进行维护、故障排除等。

      这可能比做一些基于 C++ 的疯狂混搭要慢一些,但用户通常不会注意到毫秒之间的差异......

      【讨论】:

        【解决方案5】:

        您可能还想研究的一件事(如果您不打算使用 sphinx)是 stemming your keywords。这将使匹配关键字更容易一些(因为词干 'cheese' 和 'cheesy' 最终会产生相同的词干词),从而使您的关键字匹配更加灵活。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-12-08
          • 2020-06-29
          • 2010-11-13
          • 1970-01-01
          • 1970-01-01
          • 2017-07-27
          • 1970-01-01
          相关资源
          最近更新 更多