2009-11-24 70 views
0

我一直在寻找PHP,SQL根据搜索条件从DB中检索数据的开放脚本。现在,每个脚本我偶然发现了也不会在此顺利:我在哪里可以找到优秀的数据库搜索引擎脚本?

说我要找的“奥巴马 同性恋权利的政策”好吗?但在DB 有“同性恋的奥巴马政策和 他们的权利 - 诚实的文章”。尽管这是一个相关的结果, 定期搜索与通配符不会 检索任何东西。

你知道如何解决这个问题吗?我不愿意自己写一个,加上它是一个容易出错的方法。显然有很多网站使用这种机制,我只是没有找到那样的幸运。

谢谢!

+1

你使用哪种数据库? Mysql,sqlite,ms sql,Oracle ...? – tuinstoel 2009-11-24 18:45:32

+0

MySQL,根据我的理解,这通常是与PHP一起使用的RDBMS。 – Gal 2009-11-25 13:10:27

回答

1

你似乎在寻找一个全速文本搜索引擎的种类。

DBMS在存储和检索部署信息方面做得非常出色。当你发现他们更有限的,当它涉及到的关键词的基础上进行搜索,部分的标题

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

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

如果你不想看看MySQL的FT搜索功能,有很多商业和免费的,其中许多是开源的全文引擎。

我曾经使用过,并建议

  • 的Lucene/Solr的
  • dtSearch
  • MSSEARCH

但你应该寻找到一个更完整的列表,在此Wikipedia article关于这一主题。

+1

MySQL确实提供全文搜索。 – Yacoby 2009-11-24 18:47:16

+0

@Yacoby,谢谢,你刚刚教了我一些东西。尽管我使用mySQL,但我从来不需要使用with的FT搜索。但很高兴知道这是“在那里”! – mjv 2009-11-24 18:59:54

+0

@Yacobi:MySQL全文搜索仅适用于MyISAM http://dev.mysql.com/doc/refman/5.1/en/fulltext-restrictions.html,速度比狮身人面像慢! – 2009-11-24 21:17:47

2

你会想要使用数据库full text search功能。实施应该能够通过匹配搜索条件的结果来返回结果。
大多数数据库都具有此功能,但至少使用MySQL时,它不会索引长度小于4个字符的字词(默认情况下),这是共享主机上的问题,因为他们可能不愿改变它。

如果你想要更高的性能解决方案还是有不支持全文检索数据库,有各种语言的专用搜索引擎,如Lucene

相关问题