最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

mysql布尔文本搜索教程

来源:动视网 责编:小采 时间:2020-11-09 09:00:56
文档

mysql布尔文本搜索教程

mysql布尔文本搜索教程:MySQL支持全文本搜索的另外一种形式,称为布尔方式(booleanmode)。以布尔方式,可以提供关于如下内容的细节:要匹配的词;1.要排斥的词(如果某行包含这个词,则不返回该行,即使它包含其他指定的词也是如此);2.排列提示(指定某些词比其他词更重要,更重
推荐度:
导读mysql布尔文本搜索教程:MySQL支持全文本搜索的另外一种形式,称为布尔方式(booleanmode)。以布尔方式,可以提供关于如下内容的细节:要匹配的词;1.要排斥的词(如果某行包含这个词,则不返回该行,即使它包含其他指定的词也是如此);2.排列提示(指定某些词比其他词更重要,更重
 MySQL支持全文本搜索的另外一种形式,称为布尔方式(booleanmode)。以布尔方式,可以提供关于如下内容的细节:

要匹配的词;

1.要排斥的词(如果某行包含这个词,则不返回该行,即使它包含其他指定的词也是如此);

2.排列提示(指定某些词比其他词更重要,更重要的词等级更高);

3.表达式分组;

4.另外一些内容。

即使没有 FULLTEXT 索引也可以使用 布尔方式不同于迄今为止使用的全文本搜索语法的地方在于,即使没有定义FULLTEXT 索引,也可以使用它。但这是一种非常缓慢的操作(其性能将随着数据量的增加而降低)。

为演示 IN BOOLEAN MODE 的作用,举一个简单的例子:

输入:

select note_text from productnotes where match(note_text) against('anvils' in boolean mode);

输出:

分析:此全文本搜索检索包含词 heavy 的所有行(有两行)。其中使用了关键字 IN BOOLEAN MODE ,但实际上没有指定布尔操作符,因此,其结果与没有指定布尔方式的结果相同。

IN BOOLEAN MODE 的行为差异 虽然这个例子的结果与没有IN BOOLEAN MODE 的相同,但其行为有一个重要的差别(即使在这个特殊的例子没有表现出来)。

为了匹配包含 heavy 但不包含任意以 rope 开始的词的行,可使用以下查询:

输入:

select note_text from productnotes where match(note_text) against('heavy -rope' in boolean mode);

输出:

分析:这次只返回一行。这一次仍然匹配词 heavy ,但 -rope* 明确地指示MySQL排除包含 rope* (任何以 rope 开始的词,包括ropes )的行,这就是为什么上一个例子中的第一行被排除的原因。

在MySQL 4.x中所需的代码更改 如果你使用的是MySQL4.x,则上面的例子可能不返回任何行。这是 * 操作符处理中的一个错误。为在MySQL 4.x中使用这个例子,使用 -ropes 而不是 -rope* (排除 ropes 而不是排除任何以 rope 开始的词)。

我们已经看到了两个全文本搜索布尔操作符 - 和 * ,-排除一个词,而 *是截断操作符(可想象为用于词尾的一个通配符)。下表列出支持的所有布尔操作符。

下面举几个例子,说明某些操作符如何使用:

输入:

select note_text from productnotes where match(note_text) against('+rabbit +bait' in boolean mode);

分析:这个搜索匹配包含词 rabbit 和 bait 的行。

输入:

select note_text from productnotes where match(note_text) agains('rabbit bait' in boolean mode);

分析:没有指定操作符,这个搜索匹配包含 rabbit 和 bait 中的至少一个词的行。

输入:

select note_text from productnotes where match(note_text) agains('"rabbit bait"' in boolean mode);

分析:这个搜索匹配短语 rabbit bait 而不是匹配两个词 rabbit 和bait 。

输入:

select note_text from productnotes where match(note_text) agains('>rabbit <bcarrot' in boolean mode);

分析:匹配 rabbit 和 carrot ,增加前者的等级,降低后者的等级。

输入:

select note_text from productnotes where match(note_text) agains('+safe +(<combination)' in boolean mode);

分析:这个搜索匹配词 safe 和 combination ,降低后者的等级。

排列而不排序 在布尔方式中,不按等级值降序排序返回的行。

文档

mysql布尔文本搜索教程

mysql布尔文本搜索教程:MySQL支持全文本搜索的另外一种形式,称为布尔方式(booleanmode)。以布尔方式,可以提供关于如下内容的细节:要匹配的词;1.要排斥的词(如果某行包含这个词,则不返回该行,即使它包含其他指定的词也是如此);2.排列提示(指定某些词比其他词更重要,更重
推荐度:
标签: 教程 mysql 检索
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top