任何人都可以告诉我如何使用php/mysql搜索引擎进行部分关键字搜索吗?部分关键字搜索
例如,如果一个人搜索“不能得到足够的”,我希望它返回包含关键字的搜索结果“黑眼豆豆得不到足够”或关键词“黑眼豆豆只是可以没有足够的“。
另外一个例子:如果我进入“橙汁”我希望它返回与关键字结果“橙汁味道不错”
它非常像谷歌和YouTube搜索。
我正在使用的代码是:http://tinypaste.com/eac6cf
任何人都可以告诉我如何使用php/mysql搜索引擎进行部分关键字搜索吗?部分关键字搜索
例如,如果一个人搜索“不能得到足够的”,我希望它返回包含关键字的搜索结果“黑眼豆豆得不到足够”或关键词“黑眼豆豆只是可以没有足够的“。
另外一个例子:如果我进入“橙汁”我希望它返回与关键字结果“橙汁味道不错”
它非常像谷歌和YouTube搜索。
我正在使用的代码是:http://tinypaste.com/eac6cf
你所使用的搜索方法是少量的记录中搜索的标准方法。例如,如果你只有大约一千条记录,那就没问题。
但是,如果您必须从数百万条记录中进行搜索,则不会使用此方法,因为它会非常慢。
相反,你有两个选择。
分解您的搜索字段并构建您自己的索引,其中包含单个词和对记录位置的引用。然后只搜索您的索引并从主表中查找相应的记录。
使用MySQL的全文搜索功能。这很容易实现,但有其自身的限制。这样你就不必自己构建索引。
MySQL full-text search将在这里帮助,但只用MyISAM表的工作和性能往往要经过排水时,您的数据集变得相当大。
在我工作的公司,我们将搜索查询推送到Sphinx。像Craigslist,The Pirate Bay,Slashdot这样的网站都使用它,所以它在生产中非常实用。
在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 ;
请参阅:http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html – ldg 2011-06-10 04:45:53
如何使用与PHP/MySQL的MySQL的全文搜索搜索引擎。 – rimad 2011-06-10 04:16:51
你有没有试过阅读这个话题? http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html – 2011-06-10 06:48:38