如何在SQL Server中的多语言内容中实现全文搜索

Deb*_*yay 5 sql t-sql sql-server sql-server-2008 c#-4.0

我们有一个支持不同语言的网站.我们有数百万的数据,因此在搜索中我们希望实现SQL Server全文搜索.

我们目前在下面的表结构.

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

CREATE TABLE ProductLanguage
(
   ID INT,
   LanguageID INT,
   Name NVARCHAR(200),
   ........
   ........
)
Run Code Online (Sandbox Code Playgroud)

我们希望在"名称"列中实现全文搜索,以便我们在"名称"列上创建全文索引.但是在创建全文索引时,我们每列只能选择一种语言.如果我们选择"英语"或"中立",它不会返回其他语言的预期数据,如日语,中文,法语等.

那么在SQL Server中实现多语言内容的全文搜索的最佳方法是什么呢?

我们需要创建一个不同的表.如果是,那么表格结构是什么(我们需要记住语言不固定,以后可以添加不同的语言)以及搜索查询是什么?

我们正在使用SQL Server 2008 R2.

小智 2

某些内容(文档)类型支持语言设置 - 例如 Microsoft Office 文档、PDF、[X]HTML 或 XML。

如果将“名称”列的类型更改为 XML,则可以确定每个值(即每行)的语言。例如:

而不是将值存储为字符串

name 1
name 2
name 3
Run Code Online (Sandbox Code Playgroud)

...您可以将它们存储为具有适当语言声明的 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>
Run Code Online (Sandbox Code Playgroud)

在全文索引填充期间,将根据每个值(XML 文档)的语言设置使用正确的分词器/词干分析器:名称 1 使用美国英语,名称 2 使用法语或名称 2,名称 3 使用英国英语。

当然,这需要对数据的管理和使用方式进行重大改变。

机器学习