2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 全文索索 – PHP 站内搜索 mysql 是否该加 FULLTEXT 效率与LIKE相比如何

全文索索 – PHP 站内搜索 mysql 是否该加 FULLTEXT 效率与LIKE相比如何

时间:2021-06-08 10:33:35

相关推荐

全文索索 – PHP 站内搜索 mysql 是否该加 FULLTEXT  效率与LIKE相比如何

后端开发|php教程

php,mysql,全文索索

后端开发-php教程

以往制作PHP 站内搜索都是使用的where title like \%$kw% OR content like \%$kw%这样模式,一直没用FULLTEXT,数据表是MYISAM的。

1)是否有必要使用FULLTEXT,效率相比是否会提高?where match(title,content) against ($kw)

2)对于数据表会有什么影响?增加存储空间?拖慢查询?

哪个源码论坛最好,vscode 前端注释,ubuntu 宝塔面板登不上,vnx卸载tomcat,sqlite保存记录,图饼插件,python的前端框架搭建,爬虫技术含量低,pop php,江苏seo营销,彩票网站 接口,深色风格网页样式,php模板 建站,垃圾站程序lzw

info 表会有 20万数据

android即时通信源码,向日葵ubuntu,java如何爬虫文件,php6 php7,seo转岗竞价lzw

titlevarchar(60) NOT NULL

contenttext NOT NULL

网页 手机版源码,vscode占用内存太高,ubuntu scp权限,tomcat 多个目录,sqlite3怎么用4,VB能爬虫百度翻译吗,php读取上传的文件,SEO作品指的是什么,怎么获取php网站源码下载,拆分盘游戏模板lzw

问题

刚刚发现Yii2 貌似不支持 fulltext? yii2 内建db 默认 使用PDO ,PDO支持fulltext 吗

回复内容:

以往制作PHP 站内搜索都是使用的where title like \%$kw% OR content like \%$kw%这样模式,一直没用FULLTEXT,数据表是MYISAM的。

1)是否有必要使用FULLTEXT,效率相比是否会提高?where match(title,content) against ($kw)

2)对于数据表会有什么影响?增加存储空间?拖慢查询?

info 表会有 20万数据

titlevarchar(60) NOT NULL

contenttext NOT NULL

问题

刚刚发现Yii2 貌似不支持 fulltext? yii2 内建db 默认 使用PDO ,PDO支持fulltext 吗

中文分词比英文复杂的多,

mysql 的FULLTEXT 貌似是不支持中文分词的,所以,你还是用sphinx,solr等引擎吧。

/fts3.html

SQLite官方测试中,50多万条数据用LIKE ‘%keyword%’模糊搜索耗时22.5秒,用MATCH ‘keyword’全文搜索仅耗时0.03秒,比模糊搜索快749倍.

FULLTEXT能利用索引进行查询,速度肯定要比LIKE模糊搜索快得多.

MySQL5.6.4后的InnoDB支持中文全文检索.

/doc/refman/5.6/en/innodb-fulltext-index.html

比如要实现对自己博客的所有文章进行全文搜索:

CREATE TABLE articles ( id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, title VARCHAR(200), content TEXT, article_fc TEXT, FULLTEXT idx (article_fc)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

插入文章时,对标题title和正文content这两个字段进行SCWS中文分词并用空格分隔后存入一个用于全文搜索的字段比如article_fc,该字段要求建立FullText全文索引.

用户搜索时,先用SCWS对输入进行分词比如获得关键词word1和word2,然后用MATCH AGAINST语句对进行全文搜索:

SELECT * FROM articles WHERE MATCH(article_fc) AGAINST(word1 word2);

article_fc字段所在的表也可以和标题正文所在的文章表分开,查出后连接文章表读出标题正文即可.

SCWS是马明练hightman开发的一个PHP PECL中文分词扩展,提供有词典.如果不能安装PECL扩展,作者还提供了一个PHP实现的中文分词库PSCWS:

/scws/

不想用数据库的FULLTEXT,可以试试SCWS作者马明练开发的开源中文搜索引擎XunSearch:

http://www.cloud-/view/product

【性能劲爆】XunSearch 单库最多支持 40 亿条数据,在 5 亿网页大约 1.5TB 的数据中检索时间不超过 1 秒(非缓存)。

【简单易用】前端是使用脚本语言 PHP 编写的开发工具包。API 简单清晰,开发难度极低,提供全中文的示例代码、文档、辅助脚本工具等。

【功能丰富】除支持基础的自定义分词、字段检索、布尔搜索外,还直接支持用户急需的相关搜索、拼音搜索、搜索建议等专业功能。

赞同楼上讲的,mysql就不适合干这种事。

sphinx、solr、lucene、elasticsearch 等

表加上全文索引后存储空间肯定是要增加的,而且也会影响插入速度,全文搜索还是不要用MYSQL了,加了fulltext后查询也不会很快。PHP可以考虑用solr吧,PHP有对应的扩展。

xunsearch吧。如果你觉得segment本身的搜索不错的话。

http://www.9958.pw/post/coreseek_sphinx 这个或许会有帮助

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。