SQL中文全文搜索效果不理想问题的解决

简介: 在项目中使用了SQL的全文搜索用来搜索中文的企业名称,但效果一直不理想,比如要搜索“北京三一重工有限公司”,使用“三一”就搜索不到。因是第一次使用SQL的全文搜索,起初以为是SQL的中文分词功能弱的问题,就没有细究。

在项目中使用了SQL的全文搜索用来搜索中文的企业名称,但效果一直不理想,比如要搜索“北京三一重工有限公司”,使用“三一”就搜索不到。因是第一次使用SQL的全文搜索,起初以为是SQL的中文分词功能弱的问题,就没有细究。

昨天又重新研究了一下,为了安全起见,我把服务器上的数据导入到开发的机器上做的测试,居然发现在测试的机器上表现相当好。看来不是SQL功能上的问题,是设置上的问题。在网上搜了一下,参考了“一起特殊中文全文检索问题的解决” 这篇文章终于发现了原因。原来是缺少noise.chs文件,补上之后工作正常。

也许这是一个常见的问题,但我想补充一下的就是,大部文章上反应的是少这个文件之后任何查询都会返回“查询子句只包含被忽略的词”,但我遇到的是不是任何查询都返回“查询子句只包含被忽略的词”,而只是查询功能效果不理想,这样我一直没有想到是noise.chs的问题。

相关文章
|
SQL 存储 Oracle
sql分组查询出现问题
在使用sql分组查询时,出现sql_mode=only_full_group_by异常。
136 0
|
自然语言处理 关系型数据库 PostgreSQL
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 12 章 全文搜索
第 12 章 全文搜索 目录 12.1. 介绍 12.1.1. 什么是一个文档? 12.1.2. 基本文本匹配 12.1.3. 配置 12.2. 表和索引 12.2.1. 搜索一个表 12.2.
1214 0
|
SQL 关系型数据库 PostgreSQL
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 12 章 全文搜索_12.11. 限制
12.11. 限制 PostgreSQL的文本搜索特性的当前限制是: 每一个词位的长度必须小于 2K 字节 一个tsvector(词位 + 位置)的长度必须小于 1 兆字节 词位的数量必须小于 264 tsvector中的位置值必须大于 0 并且小于 16,383 <N>(.
1097 0
|
SQL 关系型数据库 PostgreSQL
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 12 章 全文搜索_12.10. psql支持
12.10. psql支持 关于文本搜索配置对象的信息可以在psql中使用一组命令获得: \dF{d,p,t}[+] [PATTERN] 可选的+能产生更多细节。 可选参数PATTERN可以是一个文本搜索对象的名称,可以是模式限定的。
1117 0
|
存储 SQL 关系型数据库
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 12 章 全文搜索_12.9. GIN 和 GiST 索引类型
12.9. GIN 和 GiST 索引类型 有两种索引可以被用来加速全文搜索。注意全文搜索并非一定需要索引,但是在一个定期会被搜索的列上,通常需要有一个索引。 CREATE INDEX name ON table USING GIN(column); 创建一个基于 GIN(通用倒排索引)的索引。
1578 0
|
SQL 自然语言处理 关系型数据库
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 12 章 全文搜索_12.8. 测试和调试文本搜索
12.8. 测试和调试文本搜索 12.8.1. 配置测试 12.8.2. 解析器测试 12.8.3. 词典测试 一个自定义文本搜索配置的行为很容易变得混乱。本节中描述的函数对于测试文本搜索对象有用。
1158 0
|
SQL 自然语言处理 关系型数据库
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 12 章 全文搜索_12.7. 配置例子
12.7. 配置例子 一个文本搜索配置指定了将一个文档转换成一个tsvector所需的所有选项:用于把文本分解成记号的解析器,以及用于将每一个记号转换成词位的词典。每一次to_tsvector或to_tsquery的调用都需要一个文本搜索配置来执行其处理。
1105 0
|
SQL 自然语言处理 关系型数据库
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 12 章 全文搜索_12.6. 词典
12.6. 词典 12.6.1. 停用词 12.6.2. 简单词典 12.6.3. 同义词词典 12.6.4. 分类词典 12.6.5. Ispell 词典 12.6.6. Snowball 词典 词典被用来消除不被搜索考虑的词(stop words)、并被用来正规化词这样同一个词的不同派生形式将会匹配。
1412 0
|
SQL 关系型数据库 PostgreSQL
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 12 章 全文搜索_12.5. 解析器
12.5. 解析器 文本搜索解析器负责把未处理的文档文本划分成记号并且标识每一个记号的类型,而可能的类型集合由解析器本身定义。注意一个解析器完全不会修改文本 — 它简单地标识看似有理的词边界。因为这种有限的视野,对于应用相关的自定义解析器的需求就没有自定义字典那么强烈。
1172 0
|
SQL 自然语言处理 关系型数据库
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 12 章 全文搜索_12.4. 额外特性
12.4. 额外特性 12.4.1. 操纵文档 12.4.2. 操纵查询 12.4.3. 用于自动更新的触发器 12.4.4. 收集文档统计数据 这一节描述在文本搜索中有用的一些额外的函数和操作符。
1091 0