Heim  >  Artikel  >  Datenbank  >  mysql全文搜索:sql的写法_MySQL

mysql全文搜索:sql的写法_MySQL

WBOY
WBOYOriginal
2016-06-01 13:56:51855Durchsuche

首先,大家先去下载一份dvbbs.php beta1的代码,解压后先抛开php代码,找出你的mysql手册,如果没有手册那么就直接看下面的实例操作吧!

mysql全文搜索,sql的写法:

MATCH (col1,col2,…) AGAINST (expr [IN BOOLEAN MODE | WITH QUERY EXPANSION])

比如:

SELECT * FROM articles WHERE MATCH (title,body) AGAINST (’database’);

MATCH()函数对于一个字符串执行资料库内的自然语言搜索。一个资料库就是1套1个或2个包含在FULLTEXT内的列。搜索字符串作为对 AGAINST()的参数而被给定。对于表中的每一行, MATCH() 返回一个相关值,即, 搜索字符串和 MATCH()表中指定列中该行文字之间的一个相似性度量。

下面的例子则更加复杂。询问返回相关值,同时对行按照相关性渐弱的顺序进行排序。为实现这个结果,你应该两次指定 MATCH(): 一次在 SELECT 列表中而另一次在 WHERE子句中。这不会引起额外的内务操作,原因是MySQL 优化程序注意到两个MATCH()调用是相同的,从而只会激活一次全文搜索代码。

以下为引用的内容:

mysql> SELECT id, body, MATCH
(title,body) AGAINST
-> (’Security implications of
running MySQL as root’) AS score
-> FROM articles WHERE MATCH
(title,body) AGAINST
-> (’Security implications of
running MySQL as root’);
 
所以,到这里你应该会mysql 英文全文搜索了.

请注意一个问题.

一些词在全文搜索中会被忽略:

* 任何过于短的词都会被忽略。 全文搜索所能找到的词的默认最小长度为 4个字符。

* 停止字中的词会被忽略。

mysql还自带查询扩展功能.这里不做过多讨论.

下面进行php中文全文搜索的分析

曾经有一个版本的mysql支持中文全文搜索(海量 mysql chinese+,说是GPL但是最终没有开源)

中文全文搜索的关键是在分词上.mysql本身不支持cjk的分词(cjk:chinese,japanese,korean),

所以

!!!!****如何用php模拟分词是mysql全文索引的关键****!!!!

中文分词是语言分词中最困难的.现在也没有人能够彻底完美的解决(虽然这些搜索引擎做的都还不错.)

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn