ホームページ データベース mysql チュートリアル 向SQL Server全文索引进军,艰难历程

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

Jun 07, 2016 pm 05:45 PM
server 索引 行進

向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
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windows 11 でファイルやフォルダーを非表示にし、検索から削除する方法は? Windows 11 でファイルやフォルダーを非表示にし、検索から削除する方法は? Apr 26, 2023 pm 11:07 PM

<h2>Windows 11 でファイルとフォルダーを検索から非表示にする方法</h2><p>最初に確認する必要があるのは、Windows Search ファイルの場所をカスタマイズすることです。これらの特定の場所をスキップすると、保護したいファイルを非表示にしながら、結果をより速く確認できるようになります。 </p><p>Windows 11 でファイルやフォルダーを検索から除外する場合は、次の手順を実行します: </p><ol&

Windows 11の検索バーが利用できない場合の対処法を6つ紹介します。 Windows 11の検索バーが利用できない場合の対処法を6つ紹介します。 May 08, 2023 pm 10:25 PM

Windows 11 で検索バーが機能しない場合は、すぐに検索バーを起動して実行できる簡単な方法がいくつかあります。どの Microsoft オペレーティング システムでも時折不具合が発生する可能性があり、最新のオペレーティング システムもこの規則から免除されません。さらに、Reddit でユーザー u/zebra_head1 が指摘したように、22H2Build22621.1413 を使用する Windows 11 でも同じエラーが表示されます。ユーザーからは、タスクバーの検索ボックスを切り替えるオプションがランダムに表示されなくなったと苦情が寄せられました。したがって、あらゆる状況に備えなければなりません。コンピューターの検索バーに入力できないのはなぜですか?コンピューターで入力できない場合は、さまざまな要因やプロセスが原因である可能性があります。注意すべき点がいくつかあります: Ctfmon。

Windows サーバーのバックアップをインストール、アンインストール、リセットする方法 Windows サーバーのバックアップをインストール、アンインストール、リセットする方法 Mar 06, 2024 am 10:37 AM

WindowsServerBackup は、WindowsServer オペレーティング システムに付属する機能で、ユーザーが重要なデータとシステム構成を保護し、中小企業、エンタープライズ レベルの企業に完全なバックアップおよび回復ソリューションを提供できるように設計されています。この機能を使用できるのは、Server2022 以降を実行しているユーザーのみです。この記事では、WindowsServerBackup のインストール、アンインストール、またはリセットの方法を説明します。 Windows Server バックアップをリセットする方法 サーバー バックアップで問題が発生したり、バックアップに時間がかかりすぎたり、保存されているファイルにアクセスできない場合は、Windows Server バックアップ設定をリセットすることを検討してください。 Windowsをリセットするには

Oracle のインデックス タイプとは何ですか? Oracle のインデックス タイプとは何ですか? Nov 16, 2023 am 09:59 AM

Oracle インデックス タイプには次のものがあります: 1. B ツリー インデックス、2. ビットマップ インデックス、3. 関数インデックス、4. ハッシュ インデックス、5. 逆キー インデックス、6. ローカル インデックス、7. グローバル インデックス、8. ドメイン インデックス、9.ビットマップ接続インデックス、10. 複合インデックス。詳細な紹介: 1. B ツリー インデックスは、同時操作を効率的にサポートできる自己分散ツリー データ構造です。Oracle データベースでは、B ツリー インデックスが最も一般的に使用されるインデックス タイプです。2. ビット グラフ インデックスは、インデックス タイプ ベースです。ビットマップアルゴリズムなどについて。

Windows Server 2025 プレビュー バージョンがアップデートを歓迎、Microsoft が Insider テスト エクスペリエンスを改善 Windows Server 2025 プレビュー バージョンがアップデートを歓迎、Microsoft が Insider テスト エクスペリエンスを改善 Feb 19, 2024 pm 02:36 PM

Windows Server のビルド 26040 バージョンのリリースに際し、Microsoft は製品の正式名を Windows Server 2025 と発表しました。 Windows11WindowsInsiderCanaryChannel バージョン build26040 もリリースされました。何年も前に、誰かが Windows NT をワークステーション モードからサーバー モードに変換し、Microsoft オペレーティング システムのさまざまなバージョン間の共通点を示したことをまだ覚えている人もいるでしょう。 Microsoft の現在のバージョンのサーバー オペレーティング システムと Windows 11 には明らかな違いがありますが、詳細に注目する人は、なぜ Windows Server がブランドを更新したのか、

Nginx のバージョン名を変更して Web サーバーを偽装する方法 Nginx のバージョン名を変更して Web サーバーを偽装する方法 May 14, 2023 pm 09:19 PM

nginx のデフォルト名を変更する方法、少し偽装することも、インストールすることもできますヒント: 通常、変更は nginx がコンパイルされる前に行われます。変更後、コードは次のように再コンパイルする必要があります: scr/core/nginx.conf#definenginx_version"1.4.7"#definenginx_ver"nginx/"n

インデックスが配列の制限を超える問題の解決方法 インデックスが配列の制限を超える問題の解決方法 Nov 15, 2023 pm 05:22 PM

解決策は次のとおりです。 1. インデックス値が正しいかどうかを確認します。まず、インデックス値が配列の長さの範囲を超えていないかどうかを確認します。配列のインデックスは 0 から始まるため、インデックスの最大値は配列の長さから 1 を引いた値になります。 2. ループ境界条件を確認します。ループ内で配列アクセスにインデックスを使用する場合は、ループ境界条件が正しいことを確認してください。 ; 3. 配列の初期化: 配列を使用する前に、配列が正しく初期化されていることを確認してください; 4. 例外処理の使用: プログラム内で例外処理メカニズムを使用して、インデックスが配列の境界を超えるエラーをキャッチできます。 、それに応じて処理してください。

インデックスを使用して、PHP および MySQL でのデータのグループ化とデータ集約の効率を向上させるにはどうすればよいでしょうか? インデックスを使用して、PHP および MySQL でのデータのグループ化とデータ集約の効率を向上させるにはどうすればよいでしょうか? Oct 15, 2023 am 11:39 AM

インデックスを使用して、PHP および MySQL でのデータのグループ化とデータ集約の効率を向上させるにはどうすればよいでしょうか?はじめに: PHP と MySQL は現在最も広く使用されているプログラミング言語およびデータベース管理システムであり、Web アプリケーションの構築や大量のデータの処理によく使用されます。データのグループ化とデータの集計は、大量のデータを処理する際の一般的な操作ですが、インデックスが適切に設計および使用されていない場合、これらの操作は非常に非効率になる可能性があります。この記事では、PHP と MySQL でのデータのグループ化と集計の効率を向上させ、パフォーマンスを向上させるためのインデックスの使用方法を紹介します。

See all articles