• 全文索引海量数据模糊查询


    1.全文检索(Full-Text Indexes)可以对varchar,text,image型字段进行检索,一个表最多只能建一个全文索引

    2.如果使用传统的模糊搜索会降低数据库的性能,选择全文索引来解决是比较好的方法!

    3.创建全文索引演示

    (1)打开全文索引支持,启动SQL Server的全文搜索服务 

    use 数据库名字
    go
    execute sp_fulltext_database 'enable'

    (2)建表和初始化数据(说明:测试数据库名称为:myDBTest,测试表名称为:My_FullText)

    --建表

    USE [myDBTest]
    GO

    CREATE TABLE My_FullText(
    ID [int] IDENTITY(1,1) NOT NULL,
    MyText [varchar](256) NOT NULL
    )
    GO

    ----全文索引只能创建在唯一的列上

    --全文索引不能建立在视图上,只能建立在有唯一索引的基础表上。

    alter table dbo.My_FullText 
    add constraint pk_FullText primary key (ID)
    Go

    ----插入数据

    insert into dbo.My_FullText(MyText) values('汽车会飞。 {猜一种饮料} 答案:咖啡 (CAR,飞)')
    insert into dbo.My_FullText(MyText) values('A和C谁比较高呢?答案:C比较高 (因为ABCD A比C低)')
    insert into dbo.My_FullText(MyText) values('茉莉花、太阳花、玫瑰花哪一朵花最没力? 答案:茉莉花 (好一夺没力[美丽]的茉莉花)')
    insert into dbo.My_FullText(MyText) values('猩猩最讨厌什么线? 答案:平行线。 平行线没有相交(香蕉)')
    insert into dbo.My_FullText(MyText) values('橡皮、老虎皮、狮子皮哪一个最不好? 答案:橡皮。 (橡皮差)')
    insert into dbo.My_FullText(MyText) values('布和纸怕什么? 答案:布怕一万,纸怕万一。(不怕一万,只怕万一)')
    insert into dbo.My_FullText(MyText) values('麒麟飞到北极会变成什么? 答案:冰淇淋。 原因:冰淇淋(冰麒麟)')
    insert into dbo.My_FullText(MyText) values('1234567890 哪个数字最勤劳,哪个数字最懒惰? 答案:1懒惰;2勤劳。 (1不做2不休)')
    insert into dbo.My_FullText(MyText) values('怎样使麻雀安静下来? 答案:压它一下。 原因:鸦雀无声(压雀无声)')
    insert into dbo.My_FullText(MyText) values('小白加小白等于什么?答案:小白兔 (TWO)')
    insert into dbo.My_FullText(MyText) values('饺子是男人还是女人? 答案:男人 (饺子有包皮 )')
    insert into dbo.My_FullText(MyText) values('如果有一台车,小明是司机,小华坐在他右边,小花坐在他后面,请问这台车是谁的呢?? 答案:“如果”的')

    (3)创建全文索引

    注意:如果不能创建全文索引,有可能是缺乏某些组件,需要下载补丁:

    SQL Server 2005SP2补丁文件名为:SQLServer2005SP2-KB921896-x64-CHS.exehttp://www.microsoft.com/downloads/details.aspx?familyid=D07219B2-1E23-49C8-8F0C-63FA18F26D3A&displaylang=zh-cn )

    (4)测试全文索引(全文索引查询使用contains和Freetext进行查询)

    select * from dbo.My_FullText where contains(MyText,'c')

    搜索结果为:

    结果为空。而事实上记录中有包含“C”的却搜索不出来,因为默认的断词语言是简体中文,所以英文搜索不出来!

    下面使用:

    select * from dbo.My_FullText where contains(MyText,'汽车')

    (5)删除全文索引

    直接删除会出现如:

    此时删除主键,则依赖于主键的全文索引会自动删除!

    (个人学习体会,如果有什么意见,请踊跃提出!谢谢!如果要转载,请通知本人:http://www.cnblogs.com/ITGirl00

    交流QQ:392989505

    作者:Elaine
    交流QQ:392989505
  • 相关阅读:
    Java中如何设置表格处于不可编辑状态
    Android界面实现不成功(无报错)
    Eclipse网页报错
    【蓝桥杯】基础练习 十六进制转八进制 Java语言
    分析算法的复杂度
    Android Studio安装错误及解决办法
    Android程序报错以及解决办法
    Genymotion安装使用(配合Android Studio)
    Eclipse导入本地项目并运行
    蓝桥杯Java——安装软件Eclipse以及JDK
  • 原文地址:https://www.cnblogs.com/ITGirl00/p/2916206.html
Copyright © 2020-2023  润新知