症状

中英文分词系统,您将使用包含具有前导小数点,例如.325、.434、.646 的词全文本索引的索引内容。当您尝试定位行索引中通过搜索的十进制值 (例如,.325), 没有行被返回。

解决方法

若要变通解决此问题,请使用下列方法之一:

  • 使用中性断字程序。

  • 当您使用英文分词放置小数点前面的零。例如,使用"0.325"而不是"。 325" 在搜索中。英语单词断路器能正确地处理索引和搜索时遇到前导零。

详细信息

重现问题的步骤

  1. 创建全文本索引创建索引包含单词具有前导小数点,例如.325、.434、.646,等等。

  2. 使用下面的全文查询来搜索这些值通过其 LCID 是 1033年英文分词:

    Select * from sys.dm_fts_parser('"Ring, .325 x .434 .646 Platinum"', 1033, 0,0)


    结果

    关键字

    group_id

    phrase_id

    匹配项

    special_term

    display_term

    备注:

    0x007700610073006800650072

    1

    0

    1

    完全匹配

    0x002E003300310033

    1

    0

    2

    完全匹配

    .325

    使小数点

    0x006E006E00300064003300310033

    1

    0

    2

    完全匹配

    nn0d325

    0x0078

    1

    0

    3

    干扰词

    x

    0x006E006E003400330038

    1

    0

    4

    完全匹配

    .434

    使小数点

    0x006E006E003400330038

    1

    0

    4

    完全匹配

    nn434

    0x003000340036

    1

    0

    5

    完全匹配

    .646

    使小数点

    0x006E006E00340036

    1

    0

    5

    完全匹配

    nn46

    0x007300680069006D

    1

    0

    6

    完全匹配

    白金



  3. 尝试搜索"。 325"(包括小数点):

    Select * from sys.dm_fts_parser('.325', 1033, 0,0) Using English word breaker to specify the ".325" search term.

    注意:我们没有得到一个匹配项。

    结果

    关键字

    group_id

    phrase_id

    special_term

    display_term

    备注:

    0x003300310033

    1

    0

    1

    完全匹配

    325

    删除搜索时小数点和 325 <>.325,因此不返回任何行

    0x006E006E003300310033

    1

    0

    1

    完全匹配

    nn325



    在此示例中,如果您输入"。 325"作为搜索值,则会返回任何行。这是因为我们建立数据索引通过保留小数点,但英文分词在搜索过程中删除小数点。因此,我们不小心搜索而不是.325,325 并且没有找到匹配的。

    正确使用英文分词具有前导小数点的单词搜索全文本索引工作,如果我们使用中性断字程序。

  4. 使用中性断字程序运行下面的查询:

    Select * from sys.dm_fts_parser('"Ring, .325 x .434 .646 Platinum"', 0, 0,0)


    结果

    关键字

    group_id

    phrase_id

    匹配项

    special_term

    display_term

    备注:

    0x007700610073006800650072

    1

    0

    1

    完全匹配

    0x002E003300310033

    1

    0

    2

    完全匹配

    .325

    使小数点

    0x006E006E00300064003300310033

    1

    0

    2

    完全匹配

    nn0d325

    0x0078

    1

    0

    3

    干扰词

    x

    0x002E003400330038

    1

    0

    4

    完全匹配

    .434

    使小数点

    0x006E006E00300064003400330038

    1

    0

    4

    完全匹配

    nn0d434

    0x002E003000340036

    1

    0

    5

    完全匹配

    .646

    使小数点

    0x006E006E00300064003000340036

    1

    0

    5

    完全匹配

    nn0d646

    0x007300680069006D

    1

    0

    6

    完全匹配

    白金



    现在,搜索"。 325"按预期方式工作。

    Select * from sys.dm_fts_parser('.325', 0, 0,0) Specifying Neutral word breaker.

    结果

    关键字

    group_id

    phrase_id

    匹配项

    special_term

    display_term

    备注:

    0x002E003300310033

    1

    0

    1

    完全匹配

    .325

    0x006E006E00300064003300310033

    1

    0

    1

    完全匹配

    nn0d325

状态

Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?

谢谢您的反馈!

×