部分关键字搜索

| 谁能给我一个关于如何使用php / mysql搜索引擎进行部分关键字搜索的想法? 例如,如果某人搜索“只是不能得到足够的食物”,我希望它返回包含关键字“黑眼豆不能得到足够的食物”或关键字“黑眼豆不能得到足够的食物”的搜索结果豌豆就吃不饱了”。 另一个示例:如果我输入“橙汁”,我希望它返回带有关键字“橙汁味道很好”的结果 它非常类似于google和youtube搜索。 我正在使用的代码是:http://tinypaste.com/eac6cf     
已邀请:
        您使用的搜索方法是从少量记录中搜索的标准方法。例如,如果您只有大约一千条记录,那就可以了。 但是,如果您必须从数百万条记录中进行搜索,则不要使用此方法,因为它将非常缓慢。 相反,您有两个选择。 扩展您的搜索字段,并建立包含单个单词和对记录位置的引用的自己的索引。然后仅搜索索引并从主表中查找相应的记录。 使用MySQL的全文搜索功能。这比较容易实现,但有其自身的局限性。这样,您不必自己建立索引。     
        MySQL全文搜索在这里会有所帮助,但仅适用于myISAM表,并且当数据集变得很大时,性能往往会消耗the尽。 在我所在的公司,我们将搜索查询推送到Sphinx。诸如Craigslist,Pirate Bay,Slashdot之类的网站都使用了此功能,因此已被大量证明可用于生产。     
        在MySQL中,可以使用MyISAM类型表并仅定义一个文本字段(CHAR,VARCHAR或TEXT),然后创建FULLTEXT索引。只要记住文本字段的大小,允许的字符越多,索引的大小就越大,更新的速度就越慢。 其他大型数据集选项将包括诸如Solr之类的内容,但是除非您已经知道数据将包含大量数据,否则您当然可以从MySql开始并看看它如何进行。 包括phpmyadmin在内的大多数MySQL编辑器都提供了用于添加索引的gui,如果您手动执行,则代码将类似于:
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 ;
    

要回复问题请先登录注册