2016-05-24 18 views
0

agarte)を1行のみのテキストフィールド(たとえばte)のテーブルでCONTAINSを使用して検索すると、SQL Serverは有効な結果としてその行を検索します。 (私はagarteteを探していが有効なのですか?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) 

を実行する場合

答えて

1

問題がwordbraker

になりそうだogorteなど起こらないと

keyword     group_id phrase_id occurrence special_term display_term expansion_type source_term 
-------------------------- -------- --------- ---------- ------------ ------------ -------------- ----------- 
0x0075006700610072   1  0   1   Exact Match ugar   0    ugarte 
0x00740065     1  0   1   Noise Word te   0    ugarte 
0x007500670061007200740065 1  0   1   Exact Match ugarte  0    ugarte 

を取得します。

なしにすると、IFilterに見えなくなります。

関連情報:

関連する問題