mysql 全文检索的匹配问题

开发过程中碰到一个关于mysql 全文检索的问题,控制台打印的SQL语句拿到数据库里执行,结果不对。后来发现原来是少了双引号。下面是网上找到的资料,我是看到这个才意识到自己的问题。

这是之前在数据库执行的SQL语句,检索结果上万条。

SELECT DISTINCT
    c.Rm_Code,
    c.Tsr_Code,
    c.TradeName,
    c.Location,
    c.Tel_Number,
    c.Url,
    c.Nss_category1,
    c.Nss_category2
FROM
    CompanyMst c
INNER JOIN Tradename_keyword t ON t.rm_code = c.rm_code
WHERE
    c.Show_flag = 0
AND MATCH(t.keyword_unicode)AGAINST(
    ‘30d1 30bd 30ca ‘ IN BOOLEAN MODE
)
ORDER BY
    LstEntDtm DESC,
    Rm_Code ASC

这是之后改正后在数据库执行的SQL语句,检索结果11条。

SELECT DISTINCT
    c.Rm_Code,
    c.Tsr_Code,
    c.TradeName,
    c.Location,
    c.Tel_Number,
    c.Url,
    c.Nss_category1,
    c.Nss_category2
FROM
    CompanyMst c
INNER JOIN Tradename_keyword t ON t.rm_code = c.rm_code
WHERE
    c.Show_flag = 0
AND MATCH(t.keyword_unicode)AGAINST(
    ‘"30d1 30bd 30ca "‘ IN BOOLEAN MODE
)
ORDER BY
    LstEntDtm DESC,
    Rm_Code ASC
时间: 2024-11-10 12:15:47

mysql 全文检索的匹配问题的相关文章

RDS MySQL 全文检索相关问题的处理

RDS MySQL 全文检索相关问题 1. RDS MySQL 对全文检索的支持 2. RDS MySQL 全文检索相关参数 3. RDS MySQL 全文检索中文支持 3.1 MyISAM 引擎表 3.2 InnoDB 引擎表 4. like '%xxx%' 和全文检索的比较 4.1 like '%xxx%' 4.2 全文检索 5. ft_query_expansion_limit 参数作用 1. RDS MySQL 对全文检索的支持 RDS MySQL 5.5 仅 MyISAM 引擎表支持全

MySQL全文检索

一.概述 MySQL全文检索是利用查询关键字和查询列内容之间的相关度进行检索,可以利用全文索引来提高匹配的速度. 二.语法 MATCH (col1,col2,...) AGAINST (expr [search_modifier]) search_modifier: { IN BOOLEAN MODE | WITH QUERY EXPANSION } 例如: SELECT * FROM tab_name WHERE MATCH ('列名1,列名2...列名n') AGAINST('词1 词2 词

PHP+mysql数据库开发类似百度的搜索功能:中英文分词+全文检索(MySQL全文检索+中文分词(SCWS))

PHP+mysql数据库开发类似百度的搜索功能:中英文分词+全文检索 中文分词: a)   robbe PHP中文分词扩展: http://www.boyunjian.com/v/softd/robbe.html i.  Robbe完整版本下载:Robbe完整版本(PHP测试程序, 开发帮助文档, WinNT下php各版本的dll文件)下载: http://code.google.com/p/robbe(“谷歌”无法使用) b) SCWS(简易中文分词) 基于HTTP/POST的分词 : htt

mysql全文检索简单应用

需求是这样的:项目中有一张模板表,模板项中有个大字段,存放这个模板具体的模板项信息以json字符串形式存放在该字段中,这样的好处是只有一张表,不用维护传统的模板表和模板项这两张表,而且查询时候的效率更高,应该只查询一张表嘛.不用进行连表查询.当然带来的缺点就是如果存在以模板项这个大字段的条件查询会很不方便.一开始经过讨论决定该字段制作保存和读取不存在针对该字段的条件查询,所有就这么做了. 但是后面由于需求的进一步细化,有个这么个需求: 当客户选择了具体的模板项后,要先查询之前的模板是否存在相同的

MySQL 索引的匹配类型

/* 创建测试表 drop table  t_index ; create table t_index( tid  int  not null PRIMARY key  auto_increment , tname varchar(100) not null , tage TINYINT  default 0 , tadd varchar(100) default  '' , tel int default  0, tmob varchar(20) DEFAULT '' , tsfz varch

Mysql中文检索匹配与正则

今天在用sql模糊查询包含字母d的时候,发现一些不包含此字母的也被查询出来了: SELECT * FROM custom WHERE custom_realname LIKE '%d%' 查询了一下,发现以下说明: (最后修改为: SELECT * FROM custom WHERE custom_realname LIKE BINARY '%d%' ) 今天在做mysql的一个搜索的时候发现我用 select name from contact where name like '%a%'的时候

Mysql之正则匹配

Regex与Like的关系Mysql中我们经常会用到正则表达式就是Like filed like '%?%' .但是有时对于一些复杂场景下的正则过滤,单单一个like就显得有些力不从心了 Regex的精华就是 '' , like '%%' = regex '',特殊字符如^.$可以改变%的意思. like '%304%' = regex '304' like '张%' = regex '^张' like '%03' = regex '03$' like '%3%' or like '%4%' =

MySQL 全文检索 ngram Mybatis

创建全文索引(FullText index) 创建表的同时创建全文索引 FULLTEXT (name) WITH PARSER ngram 通过 alter table 的方式来添加 alter table `das`.`staff_base` add fulltext index staff_base_name(`name`) with parser ngram; 直接通过create index的方式(未测试) CREATE FULLTEXT INDEX ft_email_name ON `

【记录】mysql使用like匹配数据时关于通配符的使用误区

-- 此sql中"_"为通配符,匹配任意单字符,所以过滤的数据包含了test开头的数据: select * from live_class where title like 'test_%'; 解决方案:-- 下面两种实现的效果一样(个人偏向于第2种,比较符合后台开发的用法习惯): select * from live_class where title like 'test/_%' escape '/'; select * from live_class where title li