前言废话
如果一年前所谓不可解决的bug站在我面前,我一个照面就能把它斩于马下
直接上代码
这是我从网上查询资料整理测试过的代码,姑且算原创吧,感谢大神薛定谔的DBA
sqlserver
--以前做项目时的好多表组成的一个视图,以前用的是solr+tomcat查询
select * from standard1
-- 创建聚集索引 视图里面用了union无法修改成索引视图我就把视图插入一个表用作业一天更新一次,具体操作看上一篇博客
ALTER TABLE dbo.tsb ADD CONSTRAINT PK_FullTextIndexing PRIMARY KEY CLUSTERED(tb_id ASC)
GO
--创建全文目录
CREATE FULLTEXT CATALOG [Catalog_Test]
WITH
ACCENT_SENSITIVITY = ON --区分重音
AS DEFAULT --默认目录
AUTHORIZATION [dbo];--全文目录的所有者
GO
--更改全文目录
ALTER FULLTEXT CATALOG [Catalog_Test]
REBUILD WITH ACCENT_SENSITIVITY = ON; --重新生成整个目录并区分重音
--REORGANIZE; --重新组织全文目录
--AS DEFAULT; --指定此目录为默认目录
GO
-- 从数据库中删除全文目录(先删除全文索引)
DROP FULLTEXT CATALOG [Catalog_Test];
GO
--干扰字操作
-- 创建干扰字表
CREATE FULLTEXT STOPLIST [Stoplist_Test]
FROM SYSTEM STOPLIST
AUTHORIZATION [dbo];
GO
-- 添加删除干扰字
ALTER FULLTEXT STOPLIST [Stoplist_Test]
ADD N'乎' LANGUAGE 2052;
GO
ALTER FULLTEXT STOPLIST [Stoplist_Test]
DROP N'乎' language 2052;
--ALL LANGUAGE 'English'
--ALL
GO
-- 从数据库中删除全文本非索引字表
DROP FULLTEXT STOPLIST [Stoplist_Test];
GO
-- 创建全文索引
CREATE FULLTEXT INDEX ON [dbo].[tsb]
(a298 LANGUAGE 2052,
a100 LANGUAGE 2057,
a302 LANGUAGE 2057,
a200 LANGUAGE 2057) --索引列,明确列中存储的语言,方便过滤
KEY INDEX PK_FullTextIndexing --全文键:当前表中唯一索引名称
ON [Catalog_Test] --指定全文目录
WITH (
STOPLIST [Stoplist_Test], --指定全文非索引字表
CHANGE_TRACKING AUTO --自动填充
);
GO
-- 更改全文索引的属性
-- 激活全文索引
ALTER FULLTEXT INDEX ON [dbo].[tsb] ENABLE;
GO
-- 删除全文索引
DROP FULLTEXT INDEX ON [dbo].[FullTextIndexing];
GO
-- 测试常规查询方法
SELECT * FROM [dbo].[tsb]
-- 重新生成全文目录!~再执行(更多方法有待参考:使用全文搜索查询 SQL Server)
ALTER FULLTEXT CATALOG [Catalog_Test] REBUILD;
GO--(a298,a100,a302,a200)
SELECT * FROM [dbo].[tsb] WHERE FREETEXT(a298,'航空航天系列.间聚芳族酰胺纤维中的安装保护轴套电缆.第008部分:自包装护套 (EMI)镀镍铜编织层装配后塑料套管 操作温度-55摄氏度到200摄氏度') or FREETEXT(a100,'航空航天系列.间聚芳族酰胺纤维中的安装保护轴套电缆.第008部分:自包装护套 (EMI)镀镍铜编织层装配后塑料套管 操作温度-55摄氏度到200摄氏度');
SELECT top 10000 * FROM [dbo].[tsb] WHERE CONTAINS(a298,'全文索引*');
SELECT COUNT(1) FROM [dbo].[tsb] WHERE CONTAINS(a298,'全文 AND 索引');
--sqlserver分析开
SET STATISTICS IO ON
SET STATISTICS TIME ON
--分析关
SET STATISTICS IO OFF
SET STATISTICS TIME OFF
--查看分词结果
select * from sys.dm_fts_parser('航空航天系列.间聚芳族酰胺纤维中的安装保护轴套电缆.第008部分:自包装护套EMI镀镍铜编织层装配后塑料套管操作温度-55摄氏度到200摄氏度',2052,5,0)
mysql
show index from tb_dept
alter table tb_dept add fulltext ft_stu_name (Name,XX,XX);-- 添加全文索引
drop index ft_stu_name on tb_dept;-- 删除全文索引
select * from tb_dept where MATCH(Name,XX,XX) against('研发部');-- 查询 条数为0
show variables like '%ft%'-- 查看配置然后修改
repair table tb_dept quick;-- 修改完后修复索引 然后再执行上面查询
出现查询条数为0时