[英]Sql Server 2008 “Contains” search searching for numeric value returns all records with a different number of the same length?
我有一個搜索,用戶可以在其中輸入任何值,有時這些值只能是數字。 搜索時
Select * FROM Updates WHERE contains(Remarks, '"10010234331"')
它將返回數字相同長度的不相關結果,即上述匹配項為
"PO input differently on orders, refs are:
1001024894
10010248940"
如您所見,搜索不是這兩個子字符串的子串。 任何想法如何告訴它不僅僅是猜測?
對。
聽起來令人難以置信,事實證明,如果將全文索引“斷詞器語言”設置為除“英語”以外的任何其他內容,則全文索引將僅索引數字字符串的前5個數字。 這意味着上面的內容將作為匹配項返回,因為它們都以“ 10010”開頭。
“法語”,“德語”,“希伯來語”,甚至“中性”返回錯誤的結果,只有“英語”返回整個字符串的匹配項。
create table wtFTI( taskid int not null , remarks text, constraint [PK__wtFTI] primary key(taskid))
insert into wtfti
values(3513792, 'Remarks: 1001019658 was cancelled 26/08')
GO
CREATE FULLTEXT CATALOG [TaskRemarks]WITH ACCENT_SENSITIVITY = OFF
GO
CREATE FULLTEXT INDEX ON [dbo].[wtFTI] KEY INDEX [PK__wtFTI] ON ([TaskRemarks]) WITH (CHANGE_TRACKING = AUTO, STOPLIST = SYSTEM)
GO
ALTER FULLTEXT INDEX ON [dbo].[wtFTI] ADD ([remarks]LANGUAGE 'French')
GO
ALTER FULLTEXT INDEX ON [dbo].[wtFTI] ENABLE
GO
Select * FROM [wtFTI] WHERE contains(Remarks, '"1001019000"')
ALTER FULLTEXT INDEX ON [dbo].[wtFTI] DROP ([remarks])
GO
ALTER FULLTEXT INDEX ON [dbo].[wtFTI] ADD ([remarks] LANGUAGE 'English')
GO
Select * FROM [wtFTI] WHERE contains(Remarks, '"1001019000"')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.