簡體   English   中英

SQL Server全文本搜索上的外來變形行為

[英]Extraneous inflection behavior on SQL Server full-text search

使用僅包含一行的表和一個僅包含一個單詞的文本字段(例如te )在表上使用CONTAINS搜索某些單詞(例如agarte ),SQL Server將該行作為有效結果。 我正在尋找agarte並且te有效嗎?

我已經在兩個不同的服務器上的兩個不同的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)

得到

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

ogorte和其他不會發生。

如果沒有IFilter外觀,就不可能避免該單詞中斷。

相關信息:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM