文章編號: 2252955 - 上次校閱: 2010年7月7日 - 版次: 2.0

使用 SQL Server 全文檢索搜尋引擎,如日文語言時的考量

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
全部展開 | 全部摺疊

簡介

本文將告訴您,的考量,適用時使用 SQL Server 全文檢索搜尋引擎的日文的語言。

其他相關資訊

在 [日文 的語言片語可能包含兩個以上的文字,不包含這些字與字之間的空格。 在 Microsoft SQL Server,當使用 SQL Server 全文檢索搜尋引擎執行日文的片語的前置詞搜尋全文檢索搜尋引擎不會考慮為前置詞片語。 而是,全文檢索搜尋引擎會視為是單字名詞片語。 這是因為某個字定義為無空格或標點符號的字元字串。 此外,搜尋引擎只能在前置詞符合模式下運作。 搜尋引擎無法運作中 相符的後置字元] 模式。

,就說建立資料表,並執行下列的陳述式,在 SQL Server 中插入某些日文的片語:
CREATE TABLE test(c1 int PRIMARY KEY,c2 nvarchar(255))

INSERT test VALUES(1,N'添付???')
INSERT test VALUES(2,N'Fw: ???')
INSERT test VALUES(3,N'KK-Information:???')
INSERT test VALUES(4,N'[Q] ???????')
INSERT test VALUES(5,N'KK-Information:???????????2')
INSERT test VALUES(6,N'???')
INSERT test VALUES(7,N'???????3')
INSERT test VALUES(8,N'???????1')
INSERT test VALUES(9,N'RE: ??????')
INSERT test VALUES(10,N'??????')
INSERT test VALUES(11,N'White List???')
INSERT test VALUES(12,N'??????????')

CREATE FULLTEXT CATALOG test AS DEFAULT;
GO

CREATE FULLTEXT INDEX ON test(c2) KEY INDEX PK__<IndexName>;
GO


然後,您可以執行下列三個查詢:
查詢 1
SELECT * FROM test WHERE CONTAINS(c2, N'???')
查詢 1 的結果是,如下所示:
c1	c2
---    ----------------------------------------------
2	Fw: ???
3	KK-Information:???
6	???
查詢 2
SELECT * FROM test WHERE CONTAINS(c2, '"???*"')
查詢 2 的結果是,如下所示:
c1	c2
---    ----------------------------------------------
2           Fw: ???
3           KK-Information:???
6           ???
8           ???????1
9           RE: ??????
10          ??????
查詢 3
SELECT * FROM test WHERE CONTAINS(c2, '"*???*"')
查詢 3 的結果是,如下所示:
c1	c2
---    ----------------------------------------------
2           Fw: ???
3           KK-Information:???
6           ???
8           ???????1
9           RE: ??????
10          ??????












F
從查詢結果,您可以發現查詢 2 的結果是相同的查詢 3 結果因為全文檢索查詢無法運作中相符的後置字元] 模式。 此外,「 ??? 」 是在 「 matchings 不同從 「 ??????? 」 或 「 白 List??? 」 的語彙基元。?

必須使用 tokenize 片語,語言家族的文字分隔規則的 。 工作 breakers 使用空格和其他符號識別階段。 因此,某些階段無法辨識的文字分隔規則,並在日文語言中使用全文檢索引擎無法搜尋。 關於斷的詳細資訊,請參閱 「 Word 氣球 () 和 Stemmers 」 主題中的 「 參考 」 一節。

日文語言中使用全文檢索搜尋引擎最佳的作法是在測試階段,以查看是否在片語會受到限制。 如果某個階段的不包含空格的文字是由所的組成您無法使用全文檢索功能,來搜尋片語。 您可以改用 LIKE 關鍵字一起使用的萬用字元。 但是,LIKE 作業的效能低於全文檢索搜尋的效能。 您必須為考慮效能影響 您的應用程式。

以下是一些查詢範例 LIKE 關鍵字來搜尋片語。

查詢 4
SELECT * FROM test WHERE c2 like '???%'
結果是,如下所示:
c1	c2
---    ----------------------------------------------
6           ???
8           ???????1
10          ??????
查詢 5
SELECT * FROM test WHERE c2 like '%???%'
結果是,如下所示:
c1	c2
---    ----------------------------------------------
1           添付???
2           Fw: ???
3           KK-Information:???
4           [Q] ???????
5           KK-Information:???????????2
6           ???
7           ???????3
8           ???????1
9           RE: ??????
10          ??????
11          White List???
12          ??????????







附註
如果您使用 [全文檢索搜尋引擎,SQL Server 2008 或更新的版本中您可以使用下列查詢來找到的全文檢索索引內容的相關資訊:
SELECT * FROM sys.dm_fts_index_keywords(db_id('test'), object_id('test'))
GO
結果是,如下所示:
keyword                                               display_term             column_id   document_count
----------------------------------------------------- ------------------------ ----------- --------------------

0x00660077                                           fw                       2           1
0x0069006E0066006F0072006D006100740069006F006E       information              2           2
0x006B006B                                           kk                       2           2
0x006C00690073007430C630B930C8                       list???               2           1
0x00770068006900740065                               white                    2           1
0x30BF30A430C830EB30D530A330EB30BF30C630B930C80032   ???????????2  2           1
0x30C630B930C8                                       ???                   2           3
0x30C630B930C830D530A330EB30BF0031                   ???????1          2           1
0x30C630B930C830E130FC30EB                           ??????             2           2
0x30D530A330EB30BF30C630B930C80033                   ???????3          2           1
0x30D530A330EB30BF30EA30F330B030C630B930C8           ??????????     2           1
0x30DD30EA30B730FC30C630B930C8                       ???????           2           1
0x6DFB4ED830C630B930C8                               添付???               2           1
0xFF                                                 END OF FILE              2           12

(14 row(s) affected)
範例] 結果中只有 3 個資料列包含文字 「 ??? 」。 全文檢索搜尋引擎會將從這個字的單字 「 ??? 」 為不同的語彙基元 」 的 ?????? 」。 ?

?考

有關 SQL Server 全文檢索搜尋引擎的詳細資訊,請造訪下列 Microsoft 網站:

這篇文章中的資訊適用於:
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Workgroup
關鍵字:?
kbsurveynew kbinfo kbexpertiseadvanced kbmt KB2252955 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:2252955? (http://support.microsoft.com/kb/2252955/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。