【问题标题】: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 时会产生 022nn022,但新版本会产生 022nn22。因此,在搜索带有前导零的数字时,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 IndexesCustomize 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
    相关资源
    最近更新 更多