【问题标题】:Is there any way to search for numbers with leading zeros in SQL Server Full-text indexes有没有办法在 SQL Server 全文索引中搜索前导零的数字
【发布时间】:2014-03-31 09:31:19
【问题描述】:

我们有一个包含来自电子邮件和文件的文本的 Body (NVARCHAR(MAX)) 列的表。该列是全文索引的。

一些文档包含参考编号,例如 00123。但是,全文引擎似乎去除了前导零,因此当我们使用 CONTAINS(Body, '00123') 进行搜索时,它也会返回仅包含 123 的误报。

有没有办法解决这个问题?理想情况下,有一种方法可以在查询中解决这个问题,但我们也会考虑其他选项,例如替代分词器等。

我们使用的是 SQL Server 2008 R2 及更高版本。

【问题讨论】:

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


    【解决方案1】:

    根据 SS 2012 的 Behavior Changes to Full-Text Search 页面,之前版本的分词器在给定术语 022 时会产生 022 和 nn022,但新版本会产生 022 和 nn22。因此,在搜索带有前导零的数字时,SQL Server 2008 R2 将产生所需的结果,但 SQL Server 2012 不会。 (假设要全文索引的列使用英语作为分词语言)。

    有几种方法可以在 SQL Server 2012 上实现所需的结果。您可以恢复到以前的分词器,或者,如果您要查找的术语数量有限,请考虑使用自定义词典.

    自定义词典在Creating Custom Dictionaries for special terms to be indexed 'as-is' in SQL Server 2008 Full-Text Indexes 和Customize the Behavior of Word Breakers with a Custom Dictionary 中进行了描述。 注意:第一篇文章说英语的语言十六进制代码是 1033,但 1033 是英语的 LCID。英语的语言十六进制代码是 0009。所以对于英语词典,文件名应该是 Custom0009.lex。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-11
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    相关资源
    最近更新 更多