0
agarte
)を1行のみのテキストフィールド(たとえばte
)のテーブルでCONTAINS
を使用して検索すると、SQL Serverは有効な結果としてその行を検索します。 (私はagarte
とte
を探していが有効なのですか?)SQL Serverのフルテキスト検索での外部変換現象
私は別のサーバーにある2つの異なるSQL Server 2008と他のSQL Server 2012上でテストしてみました。
私は屈折型と関連していると思いますが、なぜこの動作を変更するのか理解できません。
つの完全な実行可能なテストがある:
SET NOCOUNT ON
GO
SELECT version = @@VERSION
GO
CREATE TABLE foo (k int identity(1,1), f nvarchar(max) not null, CONSTRAINT PK_foo PRIMARY KEY CLUSTERED (k ASC))
GO
INSERT INTO foo (f) VALUES ('te')
GO
CREATE FULLTEXT CATALOG foo_catalog
GO
CREATE FULLTEXT INDEX ON foo(f) KEY INDEX PK_foo ON foo_catalog WITH STOPLIST = OFF
GO
ALTER FULLTEXT CATALOG foo_catalog REBUILD WITH ACCENT_SENSITIVITY = OFF
GO
WAITFOR DELAY '00:00:05'
GO
SELECT COUNT(*) FROM foo WHERE CONTAINS(*, '"agarte"', language 3082) -- 1
SELECT COUNT(*) FROM foo WHERE CONTAINS(*, '"egarte"', language 3082) -- 1
SELECT COUNT(*) FROM foo WHERE CONTAINS(*, '"ogarte"', language 3082) -- 1
SELECT COUNT(*) FROM foo WHERE CONTAINS(*, '"garte"' , language 3082) -- 1
SELECT COUNT(*) FROM foo WHERE CONTAINS(*, '"gurte"' , language 3082) -- 0
GO
DROP FULLTEXT INDEX ON foo
GO
DROP FULLTEXT CATALOG foo_catalog
GO
DROP TABLE foo
GO
私は回避策として検索設定に中立的言語を設定するつもりですが、私は理由を理解し、どのようにこの動作を制御したいと思います。どうも!我々は
SELECT * FROM sys.dm_fts_parser (' "ugarte" ', 3082, 0, 0)
を実行する場合