【问题标题】:Where can I find an excellent database search engine script?我在哪里可以找到出色的数据库搜索引擎脚本?
【发布时间】:2009-11-24 18:36:49
【问题描述】:

我一直在寻找关于根据搜索词从数据库中检索数据的 PHP、SQL 开放脚本。现在,我偶然发现的每个脚本都不能很好地处理这个:

说我正在寻找“巴拉克奥巴马的 同性恋权利政策”好吗?但在数据库中 有“奥巴马关于同性恋的政策和 他们的权利 - 一篇诚实的文章”。尽管这是一个相关的结果, 使用通配符的常规搜索不会 检索任何东西。

您知道如何解决这个问题吗?我不想自己写一个,而且这是一种容易出错的方法。显然很多网站都使用这种机制,我只是没有幸运地找到类似的东西。

【问题讨论】:

  • 您使用哪个数据库? Mysql、sqlite、ms sql、Oracle……?
  • MySQL,据我了解,这通常是与 PHP 一起使用的 RDBMS。

标签: sql database search


【解决方案1】:

您似乎在寻找一种全文搜索引擎

DBMS 在存储和检索字段信息方面做得很好。正如您发现的那样,在根据关键字、标题的部分等进行搜索时,它们会受到更多限制。

一些 DBMS 提供一些内置的或或多或少集成的全文搜索引擎,这通常是一个不错的选择,因为它允许使用数据(或其部分) SQL 特征和谓词,或带有 FT 特征。

MySQL 确实支持全文搜索功能(感谢 Yacoby 提供的信息!!!)。例如,参见MySQL 5.4 documentation on Full-Text Search functions
请注意,据说此功能很慢(请参阅此答案后的备注)。

如果您想了解 MySQL 的 FT 搜索功能之外的内容,有许多商业和免费的,其中许多是开源的全文引擎。

我已经合作过并且会推荐

  • Lucene / Solr
  • dt搜索
  • MSSearch

但您应该在Wikipedia article 上查看有关此主题的更完整列表。

【讨论】:

  • MySQL 确实提供全文搜索。
  • @Yacoby,谢谢,你刚刚教会了我一些东西。虽然我使用 mySQL,但我从来不需要使用 with 进行 FT 搜索。但很高兴知道它“在那里”!
  • @Yacobi : MySQL 全文搜索仅适用于 MyISAM dev.mysql.com/doc/refman/5.1/en/fulltext-restrictions.html 并且比 sphinx 慢!
【解决方案2】:

您可能想使用数据库full text search 功能。该实现还应该能够根据结果与搜索词的匹配程度来返回结果。
大多数数据库都有这个功能,但至少在 MySQL 中,它不会索引长度小于 4 个字符的单词(默认情况下),这在共享主机上是个问题,因为他们可能不愿意更改它。

如果您想要更高性能的解决方案或确实有不支持全文搜索的数据库,有各种语言的专用搜索引擎,例如Lucene

【讨论】:

    【解决方案3】:

    我会推荐 Sphinx(适用于 MySQL、PostreSQL 和 Firebird

    【讨论】:

      猜你喜欢
      • 2015-08-15
      • 1970-01-01
      • 1970-01-01
      • 2010-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-22
      相关资源
      最近更新 更多