轉換非搜尋字伺服器組態選項
如果屬於停用字詞的非搜尋字造成全文檢索查詢的布林運算傳回零個資料列,請使用 transform noise words 伺服器組態選項來隱藏錯誤訊息。 若全文檢索查詢使用的 CONTAINS 述詞中,布林運算或 NEAR 運算有包括非搜尋字,則這個選項很有幫助。 下表說明可能的值。
值 |
說明 |
---|---|
0 |
不轉換非搜尋字 (或停用字詞)。 當全文檢索查詢包含非搜尋字時,此查詢會傳回零個資料列,而且 SQL Server 會引發警告。 這是預設行為。
|
1 |
轉換非搜尋字 (或停用字詞)。 忽略這些字,並評估查詢的其餘部分。 如果非搜尋字指定在鄰近詞彙中,SQL Server 會將其移除。 例如,非搜尋字 is 會從 CONTAINS(<column_name>, 'NEAR (hello,is,goodbye)') 中移除,將搜尋查詢轉換為 CONTAINS(<column_name>, 'NEAR(hello,goodbye)')。 請注意,CONTAINS(<column_name>, 'NEAR(hello,is)') 只會轉換成 CONTAINS(<column_name>, hello),因為只有一個有效的搜尋詞彙。 |
transform noise words 設定的效果
這一節將說明包含非搜尋字 "the" 的查詢行為 (在 transform noise words 的替代設定底下)。 假設範例全文檢索查詢字串會針對包含下列資料的資料表資料列執行:[1, "The black cat"]。
[!附註]
所有的這類案例都可以產生非搜尋字警告。
transform noise words 設定為 0 時:
查詢字串
結果
"cat" AND "the"
無結果 ("the" AND "cat" 的行為是相同的)。
"cat" NEAR "the"
無結果 ("the" NEAR "cat" 的行為是相同的)。
"the" AND NOT "black"
無結果
"black" AND NOT "the"
無結果
當 transform noise words 設定為 1 時:
查詢字串
結果
"cat" AND "the"
識別碼為 1 之資料列的叫用
"cat" NEAR "the"
識別碼為 1 之資料列的叫用
"the" AND NOT "black"
無結果
"black" AND NOT "the"
識別碼為 1 之資料列的叫用
範例
下列範例會將 transform noise words 設定為 1。
sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
sp_configure 'transform noise words', 1;
RECONFIGURE;
GO