簡體   English   中英

如何在SQL Server中的多語言內容中實現全文搜索

[英]How to implement Full-Text search in multilingual content in SQL Server

我們有一個支持不同語言的網站。 我們有數百萬的數據,因此在搜索中我們希望實現SQL Server全文搜索

我們目前在下面的表結構。

CREATE TABLE Product
(
   ID INT IDENTITY(1,1),
   Code VARCHAR(50),
   ........
   ........
)

CREATE TABLE ProductLanguage
(
   ID INT,
   LanguageID INT,
   Name NVARCHAR(200),
   ........
   ........
)

我們希望在“名稱”列中實現全文搜索,以便我們在“名稱”列上創建全文索引。 但是在創建全文索引時,我們每列只能選擇一種語言。 如果我們選擇“英語”或“中立”,它不會返回其他語言的預期數據,如日語,中文,法語等。

那么在SQL Server中實現多語言內容的全文搜索的最佳方法是什么呢?

我們需要創建一個不同的表。 如果是,那么表格結構是什么(我們需要記住語言不固定,以后可以添加不同的語言)以及搜索查詢是什么?

我們正在使用SQL Server 2008 R2。

某些內容(文檔)類型支持語言設置 - 例如Microsoft Office Documents,PDF,[X] HTML或XML。

如果將Name列的類型更改為XML,則可以確定每個值的語言(即每行)。 例如:

而不是將值存儲為字符串

name 1
name 2
name 3

...您可以將它們存儲為具有相應語言聲明的XML文檔:

<content xml:lang="en-US">name 1</content>
<content xml:lang="fr-FR">name 2</content>
<content xml:lang="en-UK">name 3</content>

在全文索引填充期間,將使用正確的斷字符/詞干分析器,基於每個值(XML文檔)的語言設置:名稱1的美國英語,法語或名稱2,以及名稱3的英語英語。

當然,這需要對數據的管理和使用方式進行重大更改。

ML

我會擔心使用XML而不是NVARCHAR( n )的性能 - 雖然我沒有硬性證明。 一種替代方法是使用動態SQL(動態生成特定於語言的代碼),並結合Product表上的語言特定索引視圖。 缺點是缺乏執行計划緩存,即:性能。

與Matija Lah的回答相同,但這是MS白皮書中概述的建議解決方案。

  • 當索引內容是二進制類型(例如Microsoft Word文檔)時,負責在將文本內容發送到斷字符之前處理文本內容的iFilter可能會尊重二進制文件中的特定語言標記。 在這種情況下,在索引時,iFilter會為特定語言中指定的特定文檔或文檔部分調用正確的分詞符。 在這種情況下,您需要做的就是在索引后驗證多語言內容是否已正確索引。 Word,HTML和XML文檔的過濾器支持文檔內容中的語言規范屬性:
    1. 單詞 - 語言設置
    2. HTML - <meta name=“MS.locale”…>
    3. XML - xml:lang屬性
  • 當您的內容是純文本時,您可以將其轉換為XML數據類型,並添加特定語言標記以指示與該特定文檔或文檔部分對應的語言。 請注意,要使其工作,在編制索引之前必須知道將使用的語言。

https://technet.microsoft.com/en-us/library/cc721269%28v=sql.100%29.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM