WEB开发网
开发学院数据库MySQL MySQL全文搜索 阅读

MySQL全文搜索

 2009-01-05 11:15:37 来源:WEB开发网   
核心提示: +apple -macintosh... 包含 “apple” 但不包含 “macintosh”+apple +(>pie <strudel)... 包含 “apple” 和 “pie&rdqu

+apple -macintosh

... 包含 “apple” 但不包含 “macintosh”

+apple +(>pie <strudel)

... 包含 “apple” 和 “pie”,或者包含的是 “apple” 和 “strudel” (以任何次序),但是 “apple pie” 排列得比 “apple strudel” 要高一点

apple*

... 包含 “apple”,“apples”,“applesauce” 和 “applet”

"some words"

... 可以包含 “some words of wisdom”,但不是 “some noise words”

全文的限制

MATCH()函数的所有参数必须是从来自于同一张表的列,同时必须是同一个FULLTEXT索引中的一部分,除非MATCH()是IN BOOLEAN MODE的。

MATCH()列列表必须确切地匹配表的某一FULLTEXT索引中定义的列列表,除非MATCH()是IN BOOLEAN MODE的。

AGAINST()的参数必须是一个常量字符串。

微调 MySQL 全文搜索

不幸地,全文搜索仍然只有很少的用户可调参数,虽然增加一些在 TODO 上排列很高。如果你有一个 MySQL 源码发行,你可以发挥对全文搜索的更多控制。

注意,全文搜索为最佳的搜索效果,被仔细地调整了。修改默认值的行为,在大多数情况下,只会使搜索结果更糟。不要修改 MySQL 的源代码,除非你知道你在做什么!

被索引的词的最小长度由 MySQL 变量ft_min_word_len指定。

stopword 列表可以从ft_stopword_file变量指定的文件中读取。

50% 阈值选择由所选择的特殊的衡量模式确定。为了禁止它,修改`myisam/ftdefs.h'文件中下面的一行:

#define GWS_IN_USE GWS_PROB改为:

#define GWS_IN_USE GWS_FREQ然后重新编译 MySQL。在这种情况下,不需要重建索引。注意:使用了这个,将严重地减少 MySQL 为MATCH()提供足够的相似性值的能力。如果你确实需要搜索这样的公共词,最好使用IN BOOLEAN MODE的搜索代替,它不遵守 50% 的阈值。

有时,搜索引擎维护员希望更改使用于逻辑全文搜索的操作符。这些由变量ft_boolean_syntax定义。对于这些更改,要求你重建你的FULLTEXT索引,对于一个 MyISAM 表,最容易的重建索引文件的方式如下面的语句:

mysql> REPAIR TABLE tbl_name QUICK;全文搜索 TODO

使所有对FULLTEXT索引的操作更快

邻近(Proximity)操作符

对 "always-index words" 的支持。他们可以是用户希望视为一个词处理的任意字符串,例如 "C++"、"AS/400"、"TCP/IP",等等

支持在MERGE表中的全文搜索

对多字节字符的支持

依照数据的语言建立 stopword 列表

Stemming (当然,依赖于数据的语言)

Generic user-suppliable UDF preparser.

使模式更加灵活 (通过为CREATE/ALTER TABLE中的FULLTEXT增加某些可调整参数)

上一页  1 2 3 4 5 6 

Tags:MySQL 全文 搜索

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接