关于SQL中的全文查询

时间:2010-10-18 09:37:26

标签: sql tsql sql-server-2008 full-text-search

我有一个包含英文和日文文本的nvarchar列。我想在此专栏上进行全文搜索。配置全文搜索时,我们需要为断字符指定语言选项(例如,使用英语断路器或使用日语断字器)。我想知道在这种情况下,我应该指定哪种语言?我不确定日语工作断路器是否适用于英语。

我正在使用SQL Server 2008 Enterprise。

提前谢谢, 乔治

1 个答案:

答案 0 :(得分:1)

如果您的列中包含不同的语言(特别是西方语言和非西方语言),则应选择中性词断路器。

还有其他一些选项,例如

  • 按每种语言分隔列(如@Tony所述)
  • 如果您的数据是纯文本;将其转换为xml数据类型并添加指示全文引擎使用的语言的语言标记。
  • 开发自定义分词系统(虽然它不是最佳解决方案)

以下是article有关在创建全文索引时选择语言的最佳做法。

在评论后添加

根据您的使用情况,可以通过多种方式查询多列。最简单的方法是使用CONTAINS谓词通过指定要搜索的列列表来查询多个列,如下所示;

SELECT Name, Color FROM Production.Product
WHERE CONTAINS((Name, Color), 'Red');

另一个解决方案可能是使用可以在CASE / IF语句中使用的语言指示器列,它可以帮助您按语言有条件地拆分查询。您还可以使用DATALENGTH()TSQL函数来检查它是否为空并决定选择哪一列。