热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

向SQLServer全文索引进军,艰难历程

向SQLServer全文索引进军,艰难历程写这篇文章本来不在计划之内,以前也没有接触过全文索引。偶然的一次备课中。突然有了灵感。决定将自己创建及其使用全文索引的过程记录下来,以备后续使用。至于全文索引的概念,网上一大堆,这里就不再赘述。直接切入正

向SQL Server全文索引进军,艰难历程 写这篇文章本来不在计划之内,以前也没有接触过全文索引。偶然的一次备课中。突然有了灵感。决定将自己创建及其使用全文索引的过程记录下来,以备后续使用。 至于全文索引的概念,网上一大堆,这里就不再赘述。直接切入正

向SQL Server全文索引进军,艰难历程

写这篇文章本来不在计划之内,以前也没有接触过全文索引。偶然的一次备课中。突然有了灵感。决定将自己创建及其使用全文索引的过程记录下来,以备后续使用。

至于全文索引的概念,网上一大堆,这里就不再赘述。直接切入正题。

创建全文索引步骤:

1:对着数据库点击右键-选择属性-选择文件,选中“使用全文索引”

该选项只要勾选就可以了,默认都是勾选的。

2:对着表点击右键-全文索引-定义全文索引

3:点击下一步,如果这个表中没有唯一性索引就会出现下图所示

4:选择表列,选择断字符语言。

5:点击下一步,这里的选项要注意,如果不想再表、视图更改的时候更新全文索引,那就选择不跟踪更改;这样就可以选择是否在创建索引时启动完全填充了。

6:点击下一步创建索引要保存的目录,香港服务器,全文索引的索引文件是以文件的形式保存到硬盘上的。

7:之后就可以设置自动填充、手动跟踪更改,还有设置计划了。

上述步骤虽然简单,但是我在创建时,碰到了N多问题

问题描述:

01.首先我对表点击右键的时候,全文索引菜单项是灰色,不可用状态

如下图

通过查询资料发现需要执行如下命令开启该菜单项目

EXEC sp_fulltext_database 'ensable'

这样全文索引就变成可用状态了。

如果想让全文索引重新变暗(当然一般人不会这么做),可以执行如下代码

EXEC sp_fulltext_database 'disable'

02.在使用全文索引进行检索时,必须要开启全文检索服务

默认该服务是关闭的。

03.当我创建好全文索引后,通过如下语句进行索引关键字时

Select content from info infoinfo

where contains(content, '但为了获得最佳性能,建议使用主键约束或唯一约束。')

出现了如下提示:

"SQL Server 在与全文筛选器后台程序宿主(FDHost)进程通信时遇到错误 0x80070218。请确保 FDHost 进程正在运行。若要重新启动 FDHost 进程,请运行 sp_fulltext_service 'restart_all_fdhosts' 命令或重新启动 SQL Server 实例。 "

经过反复摸索, 发现需要在 SQL配置工具里面, 更改全文服务的运行账户, 有默认的 "系统内设"-->"本地账户", 搞定!

但是更改完该设置后,我依然没能笑出声来,原因是接下来虽然没有错误发生,但是却检索不出我需要的结果,但通过like进行检索,的确有数据。

select content from infoinfo

where content like '%但为了获得最佳性能,建议使用主键约束或唯一约束。%'

这时候,我差点崩溃了。没办法,继续搜索资料。

最后,从微软官网上搜索到这样一篇文章

里面详细讲述了产生该问题的原因,以及对应的解决方案

请注意

重要提示: 本文包含有关修改注册表的信息。 在修改注册表之前,请务必对其进行备份,并确保您了解如何还原注册表发生问题。有关如何备份、 还原,和编辑注册表单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

256986Microsoft Windows 注册表的说明

症状

具有 300 KB 以上的文本 (超过 150 KB ntext列的 UNICODE 文本) 的文本的全文启用的列上运行全文索引包含查询时,美国空间,您可能会收到一条消息,"0 行受影响",即使存在有效的结果。

原因

Microsoft 搜索服务 (MSSearch.exe) 维护 SQL Server 7.0 全文搜索来搜索的基于字符的数据类型,如字符、 varchar、文本和ntext的全文目录。文本可以有多个 300 KB 的数据根据您定义的列 (ntext可以有多个 150 KB 的 UNICODE 文本)。全文索引填充时,MSSearch 服务从文本列中检索所有非重复的单词,并将它们存储在虚拟内存中,它将它们合并到主索引之前。MSSearch 属性可防止 MSSearch 服务占用的虚拟内存。MSSearch 属性由下面的注册表和它的值控制:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer\ \ MaxBytesPerFile

例如: Full_Text_Catalog_Name = SQL0000500005
此注册表项的默认值设置为 307200 (300 KB)。因此,MSSearch 服务假定 300 KB 的文本作为重要和填充全文索引时将忽略文本列的其余的数据。
因此,当您运行全文的 CONTAINS 子句查询来搜索后 300 KB 的文本将出现在文本栏中的单词,不可能获得有效的结果。

替代方法

警告: 如果注册表编辑器使用不当,可能会导致严重的问题,可能需要您重新安装操作系统。注册表编辑器使用不当所产生的问题,Microsoft 不能保证您可以解决。使用注册表编辑器需要您自担风险。
若要变通解决此问题:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer\Full_Text_Catalog_Name\

(例如: Full_Text_Catalog_Name = SQL0000500005)。

但是真正按照这个文档进行操作时,再次碰到了问题,就是第3步到1.0后,没有Indexer文件夹,我晕,只能再次硬着头皮查资料。结果,网上资料很少,却搜到一篇一模一样的英文文章,是这样写的

PRB: A Full-Text Search Query on TEXT or NTEXT Column Does Not Return Valid Results

Article ID: 241113 - View products that this article applies to.

This article was previously published under Q241113

Notice
推荐阅读
  • 本文探讨了Java编程中MVC模式的优势与局限,以及如何利用Java开发一款基于鸟瞰视角的赛车游戏。 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 尽管PHP是一种强大且灵活的Web开发语言,但开发者在使用过程中常会陷入一些典型的陷阱。本文旨在列出PHP开发中最为常见的10种错误,并提供相应的预防建议。 ... [详细]
  • 俗话说得好,“工欲善其事,必先利其器”。这句话不仅强调了工具的重要性,也提醒我们在任何项目开始前,准备合适的工具至关重要。本文将介绍几款C语言编程中常用的工具,帮助初学者更好地选择适合自己学习和工作的编程环境。 ... [详细]
  • MySQL 'Too Many Connections' 错误处理及优化方案
    本文详细介绍了如何诊断和解决MySQL数据库中出现的‘Too Many Connections’错误,包括查看当前连接状态、调整配置文件以及优化应用代码等方法。 ... [详细]
  • 应对.avast后缀勒索病毒:全面指南
    本文详细介绍了.avast后缀勒索病毒的特性、感染途径、恢复方法及预防措施,旨在帮助用户有效应对这一威胁。 ... [详细]
  • 在Windows Server 2008 R2上配置IIS FTP服务
    本文详细介绍了如何在Windows Server 2008 R2操作系统上通过IIS配置FTP服务的过程,包括服务器角色的选择与安装、FTP站点的创建以及必要的服务和防火墙设置检查。 ... [详细]
  • 推荐两款实用的网络诊断工具
    大家好,因为一些私事很久没有更新博客了。今天向大家介绍两款非常有用的网络诊断工具——Tracert和Telnet,帮助你更好地理解和解决网络问题。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • 深入分析十大PHP开发框架
    随着PHP技术的发展,各类开发框架层出不穷,成为了开发者们热议的话题。本文将详细介绍并对比十款主流的PHP开发框架,旨在帮助开发者根据自身需求选择最合适的工具。 ... [详细]
  • iTOP4412开发板QtE5.7源码编译指南
    本文详细介绍了如何在iTOP4412开发板上编译QtE5.7源码,包括所需文件的位置、编译器设置、触摸库编译以及QtE5.7的完整编译流程。 ... [详细]
  • 在Win10上利用VS2015构建Caffe2环境
    本文详细介绍如何在Windows 10操作系统上通过Visual Studio 2015编译Caffe2深度学习框架的过程。包括必要的软件安装、环境配置以及常见问题的解决方法。 ... [详细]
  • 当您的笔记本电脑出现无法正常关机的情况时,可以通过多种方法进行排查和修复,包括检查声音文件、减少启动程序、调整电源管理设置等。 ... [详细]
  • Windows Vista系统中的回收站不仅仅是一个存放已删除文件的容器,它还具备许多鲜为人知的功能。本文将揭示这些功能,帮助用户更好地管理和利用回收站。 ... [详细]
author-avatar
mobiledu2502926443
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有