代码之家  ›  专栏  ›  技术社区  ›  egrunin

带多语言列的全文搜索

  •  11
  • egrunin  · 技术社区  · 15 年前

    我需要搜索一个列,但该列中的语言有所不同:

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

    Language 可以是: en , de , it , kr th

    目前,我建立了一个协和并使用它进行搜索。但这只适用于英语、德语和意大利语,甚至不支持词干分析的人。其他用途 LIKE '%searchterm%' ,我正在努力改进。

    4 回复  |  直到 15 年前
        1
  •  13
  •   egrunin    15 年前

    如果您知道哪些行包含哪种语言,则可以创建一个经过筛选的索引视图,使其仅包含每种语言的一行,而不包括每种语言的单独列,并对每种语言的每一行进行FTI。不过,您需要单独查询每个视图。

        2
  •  4
  •   Joe Stefanelli    15 年前

    引用自上的Microsoft参考资料 CREATE FULLTEXT INDEX :

    语言,或当 列未知,可能是 (0x0)语言资源。然而, 首先你应该明白 使用 中性(0x0)语言资源。为了 关于可能的 使用的解决方案和后果 看见 Best Practices for Choosing a Language When Creating a Full-Text Index .

        3
  •  4
  •   Seph    12 年前

    我知道这是个老问题,但我刚遇到。

    我看到的一种方法是使用XML列并指定 xml:lang CREATE FULLTEXT INDEX (Transact-SQL) .

    文档中的编码将在索引时使用。为了 识别语言。在查询时,前面指定的值 in language_term成为全文使用的默认语言 查询。

    这种方法的主要缺点是它将数据类型更改为XML,但它似乎可以很好地满足我们当时的需要。

        4
  •  2
  •   N Burnett    12 年前