mysql全文搜索中文应用

昝辉Zac Zac的SEO博客,坚持12年,优化成为生活。

今天要介绍的就是mysql全文搜索的应用,全文检索的表的存储引擎类型必须为MyISAM,否则不能做全文搜索.

首先用下面表举例,代码如下:

  1. CREATETABLEarticles(02.idINTUNSIGNEDAUTO_INCREMENTNOTNULLPRIMARYKEY,03.titleVARCHAR(200),04.bodyTEXT,05.FULLTEXT(title,body)06.)ENGINE=MyISAMDEFAULTCHARSET=utf8;

MySQL使用Match()和Against()执行全文搜索,举例如下:

SELECT body FROM articles WHERE Match(body) Against('www.phpfensi.com');

如上Match是正对指定的列进行搜索,Against('www.phpfensi.com')是正对指定词进行搜索.

另外:使用查询扩展WITH QUERY EXPANSION,将会搜索出更多结果(mysql会将匹配的行中有用的词再次进行搜索,这样搜索出来的结果更多,但可能不是你想要的);

使用布尔文本搜索IN BOOLEAN MODE,类似我们平时使用搜索引擎时用到的的语法,逻辑与、逻辑或、逻辑非等.支持的布尔操作符如下.

  1. 全文布尔操作符:
  2. --------------------------------------------------------------------------------------------------------------
  3. |操作符| 说明|
  4. --------------------------------------------------------------------------------------------------------------
  5. |+|包含,词必须存在
  6. |-|排除,词必须不出现
  7. |>|包含,而且增加等级值
  8. |<|包含,且减少等级值
  9. |()|把词组成子表达式(允许这些子表达式作为一个组被包含,排除,排列等)
  10. |~|取消一个词的排序值
  11. |*|词尾的通配符
  12. |""|定义一个短语(与单个词的列表不一样,它匹配整个短语以便包含或排除这个短语)
  13. ----------------------------------------------------------------------------------------------------------------

使用方法如下:

  1. SELECT*FROMarticlesWHEREMATCH(title,body)
  2. AGAINST('+apple-banana'INBOOLEANMODE);

+ 表示AND,即必须包含,- 表示NOT,即不包含,代码如下:

  1. SELECT*FROMarticlesWHEREMATCH(title,body)
  2. AGAINST('applebanana'INBOOLEANMODE);

apple和banana之间是空格,空格表示OR,即至少包含apple、banana中的一个,代码如下 :

  1. SELECT*FROMarticlesWHEREMATCH(title,body)
  2. AGAINST('+applebanana'INBOOLEANMODE);

必须包含apple,但是如果同时也包含banana则会获得更高的权重,代码如下:

  1. SELECT*FROMarticlesWHEREMATCH(title,body)
  2. AGAINST('+apple~banana'INBOOLEANMODE);

~ 是我们熟悉的异或运算符,返回的记录必须包含apple,但是如果同时也包含banana会降低权重,但是它没有 +apple -banana 严格,因为后者如果包含banana压根就不返回,代码如下:

  1. SELECT*FROMarticlesWHEREMATCH(title,body)
  2. AGAINST('+apple+(>banana<orange)'INBOOLEANMODE);

返回同时包含apple和banana或者同时包含apple和orange的记录,但是同时包含apple和banana的记录的权重高于同时包含apple和orange的记录.

linux中mysql中文全文搜索,代码如下:

  1. centos6
  2. xampp1.7.7
  3. mysql5.5
  4. #/opt/lampp/bin/mysql-uroot-ppassword
  5. mysql>SHOWVARIABLESLIKE'plugin_dir';
  6. --插件路径:/opt/lampp/lib/mysql/plugin
  7. #wgethttp://mysqlcft.googlecode.com/files/mysqlcft-1.0.0-x86_64-bin.tar.gz
  8. #tarzxvfmysqlcft-1.0.0-x86_64-bin.tar.gz
  9. #cpmysqlcft.so/opt/lampp/lib/mysql/plugin
  10. #/opt/lampp/bin/mysql-uroot-ppassword
  11. mysql>INSTALLPLUGINmysqlcftSONAME'mysqlcft.so';
  12. mysql>SELECT*FROMmysql.plugin;
  13. mysql>SHOWPLUGINS;
  14. ALTERIGNORETABLEarticlesADDFULLTEXTINDEXcnFullIndex(title,body)WITHPARSERmysqlcft;
  15. SELECT*FROMarticlesWHEREMATCH(title,body)AGAINST('北京'INBOOLEANMODE

相关广告
  • mysql全文搜索中文应用 mysql全文搜索中文应用 mysql全文搜索中文应用
相关阅读

mysql全文搜索与中文全文搜索方法

2019/10/10 17:34:50 | 谷歌SEO算法 | DNS

mysql全文搜索中文应用

2019/10/10 17:34:24 | 谷歌SEO算法 | SEO培训

MySQL中全文搜索详解介绍

2019/10/10 17:34:04 | 谷歌SEO算法 | SEO优化