9

有沒有在多語言表中使用FULLTEXT而不爲每種語言提供自己的列的方法?使用多語言列進行FULLTEXT搜索

我有一個專欄中,我需要搜索,但在該列中的語言而異:

ProductID int 
Description nvarchar(max) 
Language  char(2) 

Language可以是一個:endeitkrth

目前我建用於搜索的一致性和用途。但這隻適用於英語,德語和意大利語,即使對於那些不支持詞幹的人也是如此。其他一切使用LIKE '%searchterm%',我試圖改善這一點。

我使用的是SQL Server 2005中

回答

11

而不是每個語言都有一個單獨列的,如果你知道哪些行包含您可以創建過濾,包括每種語言的單一的langauge只排索引視圖的語言和FTI每一個。你需要分別查詢每個視圖。

+0

我沒有想過使用視圖,這可能實際上工作。 – egrunin 2010-10-07 14:06:25

2

從Microsoft參考報價在CREATE FULLTEXT INDEX

對於非BLOB和非XML列多 語言 包含文本數據,或者當存儲在 的 語言的文本的情況下,列未知,可能是 適合您使用中性 (0x0)語言資源。但是,首先您應該瞭解使用 中性(0x0)語言資源的可能後果 。有關 有關可能的 解決方案以及使用 中性(0x0)語言資源 的信息,請參閱Best Practices for Choosing a Language When Creating a Full-Text Index

+0

這些網頁基本上說:不。 – egrunin 2010-10-07 14:08:52

2

我使用20多種語言的意見。適用於查詢(如果選擇正確的視圖以在sprocs中使用有點複雜)。但是,對基礎表的插入和更新會被破壞,因爲計劃似乎需要在每個ft視圖中包含一個檢查,即使沒有更改跟蹤。

+0

謝謝。我現在正在其他地方工作,但你永遠不知道明天會發生什麼:) – egrunin 2014-01-09 13:49:53

4

我知道這是一個老問題,但我剛剛遇到它。

我看到的一種方法是使用XML列並指定xml:lang屬性。如CREATE FULLTEXT INDEX (Transact-SQL)中所述。

對於存儲在XML或BLOB類型列中的文檔,文檔中的編碼語言 將在索引時使用。例如,對於 示例,在XML列中,XML文檔中的xml:lang屬性將 標識爲該語言。在查詢時間,先前在language_term中指定的 的值成爲用於全文 查詢的默認語言,除非將language_term指定爲全文 查詢的一部分。

該方法的主要缺點是它將數據類型更改爲XML,但它似乎對我們當時的需求正常工作。

+0

我會研究這個,謝謝。 – egrunin 2014-03-13 20:30:45