2011-06-10 240 views
0

任何人都可以告诉我如何使用php/mysql搜索引擎进行部分关键字搜索吗?部分关键字搜索

例如,如果一个人搜索“不能得到足够的”,我希望它返回包含关键字的搜索结果“黑眼豆豆得不到足够”或关键词“黑眼豆豆只是可以没有足够的“。

另外一个例子:如果我进入“橙汁”我希望它返回与关键字结果“橙汁味道不错”

它非常像谷歌和YouTube搜索。

我正在使用的代码是:http://tinypaste.com/eac6cf

回答

0

你所使用的搜索方法是少量的记录中搜索的标准方法。例如,如果你只有大约一千条记录,那就没问题。

但是,如果您必须从数百万条记录中进行搜索,则不会使用此方法,因为它会非常慢。

相反,你有两个选择。

  1. 分解您的搜索字段并构建您自己的索引,其中包含单个词和对记录位置的引用。然后只搜索您的索引并从主表中查找相应的记录。

  2. 使用MySQL的全文搜索功能。这很容易实现,但有其自身的限制。这样你就不必自己构建索引。

+0

如何使用与PHP/MySQL的MySQL的全文搜索搜索引擎。 – rimad 2011-06-10 04:16:51

+0

你有没有试过阅读这个话题? http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html – 2011-06-10 06:48:38

0

MySQL full-text search将在这里帮助,但只用MyISAM表的工作和性能往往要经过排水时,您的数据集变得相当大。

在我工作的公司,我们将搜索查询推送到Sphinx。像Craigslist,The Pirate Bay,Slashdot这样的网站都使用它,所以它在生产中非常实用。

0

在MySQL中,您可以使用MyISAM类型表并简单地定义文本字段(CHAR,VARCHAR或TEXT),然后创建FULLTEXT索引。只要记住文本字段的大小,允许的字符越多,索引的大小越大,并且要更新的字符越慢。

其他大型数据集选项将包括诸如Solr之类的东西,但除非您已经知道您的数据将有大量数据,否则您肯定可以从MySql开始,看看它是如何发展的。

大多数MySQL编辑器,包括用于phpMyAdmin的添加索引提供了一个图形用户界面,如果你这样做手工的代码看起来是这样的:

CREATE TABLE IF NOT EXISTS `test2` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` text CHARACTER SET utf8 NOT NULL, 
    PRIMARY KEY (`id`), 
    FULLTEXT KEY `ft_name` (`name`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 
+0

请参阅:http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html – ldg 2011-06-10 04:45:53