Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 部分关键字搜索_Php_Mysql_Search Engine - Fatal编程技术网

Php 部分关键字搜索

Php 部分关键字搜索,php,mysql,search-engine,Php,Mysql,Search Engine,有人能告诉我如何使用php/mysql搜索引擎进行部分关键字搜索吗 例如,如果一个人搜索“just Cant get Though”,我希望它返回包含关键字“just Cant get Though by black eyed peas”或关键字“black eyed peas just Cant get Though”的搜索结果 另一个例子:如果我输入“橙汁”,我希望它返回关键字为“橙汁味道好”的结果 这很像谷歌和youtube搜索 我使用的代码是:您使用的搜索方法是从少量记录中搜索的标准方法

有人能告诉我如何使用php/mysql搜索引擎进行部分关键字搜索吗

例如,如果一个人搜索“just Cant get Though”,我希望它返回包含关键字“just Cant get Though by black eyed peas”或关键字“black eyed peas just Cant get Though”的搜索结果

另一个例子:如果我输入“橙汁”,我希望它返回关键字为“橙汁味道好”的结果

这很像谷歌和youtube搜索


我使用的代码是:

您使用的搜索方法是从少量记录中搜索的标准方法。例如,如果你只有大约1000条记录,那就可以了

但是,如果你必须从数百万条记录中搜索,这个方法将不会被使用,因为它将非常缓慢

相反,你有两个选择

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

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

  • 这会有所帮助,但只适用于myISAM表,而且当数据集变得相当大时,性能往往会下降


    在我工作的公司,我们将搜索查询推送到。Craigslist、Pirate Bay、Slashdot等网站都使用此功能,因此它在生产中的应用已经得到了验证。

    在MySQL中,您可以使用MyISAM类型的表,只需定义一个文本字段(CHAR、VARCHAR或text),然后创建全文索引。请记住文本字段的大小,允许的字符越多,索引的大小就越大,更新速度就越慢

    其他大型数据集选项可能包括这样的内容,但除非您已经知道您的数据将拥有大量数据,否则您肯定可以从MySql开始,看看它是如何运行的

    大多数MySQL编辑器(包括phpmyadmin)都提供了用于添加索引的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 ;
    

    我如何在php/mysql搜索引擎中使用mysql全文搜索。你有没有试过阅读这个主题?