本文可協助您解決使用英文斷詞工具搜尋不會傳回 Windows、SQL Server 2016、2014 和 2012 上 SQL Server 2017 前置小數點的單字的問題。
原始產品版本:SQL Server
原始 KB 編號: 3191316
徵兆
在英文語言斷詞工具中,您可以使用全文檢索索引編製內容索引,其中包含具有前置小數點的字詞,例如 .325
、 .434
和 .646
。 當您嘗試藉由搜尋十進位值來尋找索引中的數據列時, .325
不會傳回任何數據列。
因應措施
若要解決此問題,請使用下列其中一種方法:
- 使用中性斷詞工具。
- 當您使用英文斷詞工具時,請將零放在小數點前面。 例如,在
0.325
搜尋中使用 而不是.325
。 英文斷詞工具會在遇到前置零時正確處理索引編製和搜尋。
重現問題的步驟
建立全文檢索索引,以建立索引,其中包含具有前置小數點的字組,例如
.325
、.434
、.646
等等。使用下列全文檢索查詢,使用 LCID 為 1033 的英文斷詞工具搜尋這些值:
SELECT * FROM sys.dm_fts_parser('"Ring, .325 x .434 .646 Platinum"', 1033, 0,0)
結果
keyword group_id phrase_id occurrence special_term display_term 備註 0x007700610073006800650072 1 0 1 完全相符 Ring 0x002E003300310033 1 0 2 完全相符 .325 保留十進位 0x006E006E00300064003300310033 1 0 2 完全相符 nn0d325 0x0078 1 0 3 雜訊字 x 0x006E006E003400330038 1 0 4 完全相符 .434 保留十進位 0x006E006E003400330038 1 0 4 完全相符 nn434 0x003000340036 1 0 5 完全相符 .646 保留十進位 0x006E006E00340036 1 0 5 完全相符 nn46 0x007300680069006D 1 0 6 完全相符 Platinum 試著搜尋
.325
(包括小數點):SELECT * FROM sys.dm_fts_parser('.325', 1033, 0,0) -- Using English word breaker to specify the ".325" search term.
注意
我們沒有得到比賽。
結果
keyword group_id phrase_id occurrence special_term display_term 備註 0x003300310033 1 0 1 完全相符 325 搜尋時移除小數點,並移除 325 <> .325,因此不會傳回任何數據列 0x006E006E003300310033 1 0 1 完全相符 nn325 在此範例中,如果您輸入
.325
做為搜尋值,則不會傳回任何數據列。 這是因為我們藉由保留小數點來為數據編製索引,但英文斷詞工具會在搜尋過程中移除小數點。 因此,我們無意中搜尋 325 而不是.325
,而且找不到相符專案。如果使用中性斷詞工具,使用英文斷詞工具搜尋具有前置小數點的字詞,即可正確搜尋全文檢索索引。
使用中性斷字工具執行下列查詢:
SELECT * FROM sys.dm_fts_parser('"Ring, .325 x .434 .646 Platinum"', 0, 0,0)
結果
keyword group_id phrase_id occurrence special_term display_term 備註 0x007700610073006800650072 1 0 1 完全相符 Ring 0x002E003300310033 1 0 2 完全相符 .325 保留十進位 0x006E006E00300064003300310033 1 0 2 完全相符 nn0d325 0x0078 1 0 3 雜訊字 x 0x002E003400330038 1 0 4 完全相符 .434 保留十進位 0x006E006E00300064003400330038 1 0 4 完全相符 nn0d434 0x002E003000340036 1 0 5 完全相符 .646 保留十進位 0x006E006E00300064003000340036 1 0 5 完全相符 nn0d646 0x007300680069006D 1 0 6 完全相符 Platinum 現在,搜尋
.325
會如預期般運作。SELECT * FROM sys.dm_fts_parser('.325', 0, 0,0) -- Specifying Neutral word breaker.
結果
keyword group_id phrase_id occurrence special_term display_term 備註 0x002E003300310033 1 0 1 完全相符 .325 0x006E006E00300064003300310033 1 0 1 完全相符 nn0d325