在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文档,PDF,[X] HTML或XML。
如果您将名称列的类型更改为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表上的语言特定索引视图。 thsi的缺点是缺乏执行计划缓存,即:性能。
与Matija Lah的回答一样,但这是MS白皮书中概述的建议解决方案。
<meta name=“MS.locale”…>
xml:lang
属性 https://technet.microsoft.com/en-us/library/cc721269%28v=sql.100%29.aspx
链接地址: http://www.djcxy.com/p/66851.html上一篇: Text search in multilingual content in SQL Server
下一篇: SQL Server 2008 Full text search on a table with a composite primary key