フルテキストインデックス


たとえばこんなクエリ。
トータル:13796157件
から1613件で1分20秒くらい

USE gisdb;
GO

DECLARE @Q VARCHAR(40) = '%銀座%'
SELECT
 *
FROM 
 CB_GEO
WHERE
 SHIKUTYOSON LIKE @Q OR
 OOAZATYOU LIKE @Q;

フルテキストインデックスの作成
クエリ実行後もインデックス構築は完了しないので注意

USE gisdb;
GO


SELECT * FROM sys.fulltext_languages;

CREATE FULLTEXT CATALOG addr_catalog;
GO
CREATE FULLTEXT INDEX ON CB_GEO
 ( 
     SHIKUTYOSON ,
     OOAZATYOU  
 ) 
  KEY INDEX PK_PID 
      ON addr_catalog; 
GO

SSMSでテーブル右クリックのフルテキストインデックスの停止がグレーアウトで構築完
検索 1秒程度で1633件の結果が得られる。

USE gisdb;
GO

DECLARE @Q VARCHAR(40) = '銀座'

SELECT
 *
FROM 
 CB_GEO
WHERE
 CONTAINS(*, @Q)
;

形態素にならない場合はインデックス化されないので注意とインデックス構成タイミングにだけ注意してれば良い。

CREATE FULLTEXT CATALOG
http://msdn.microsoft.com/ja-jp/library/ms189520.aspx

CREATE FULLTEXT INDEX
http://msdn.microsoft.com/ja-jp/library/ms187317.aspx

CONTAINS
http://msdn.microsoft.com/ja-jp/library/ms187787.aspx

フルテキスト検索でのクエリ
http://msdn.microsoft.com/ja-jp/library/ms142583.aspx#Using_Boolean_Operators

カテゴリー: 開発, 設計 タグ: パーマリンク