1

我为以下内容创建了替换词库条目:

Pair: 1/2, half
Pair: 1/3, third
Pair: 1/4, quarter
Pair: 1/8, eighth

当我使用诸如“1/2 英寸管道”之类的搜索词进行搜索时,我应该得到包含“1/2”和“一半”的行。我有两个这样的行。但是,使用开箱即用的默认全文搜索,似乎“1/2”不包含在相关列的全文索引结果中。

我还没有找到关于什么、在哪里、如何配置全文列的重新索引以使全文搜索条件包括允许 1/2、1/3 等的明确答案。就此而言,我在全文搜索中也需要单个数字。

如果有人可以指导我阅读一些文档,其中涵盖了我可以完成此任务的步骤,我将不胜感激。

4

2 回答 2

1

sys.dm_fts_parser 是一个很棒的 DMF,可以让您了解全文如何解析句子以及将哪些单词存储在内部索引中。对于您的第一个示例,我看到以下输出 -

select * from sys.dm_fts_parser(N'"Pair: 1/2, half"', 1033, 0, 0)

keyword group_id    phrase_id   occurrence  special_term    display_term    expansion_type  source_term
0x0070006100690072     1    0   1   Exact Match pair    0   Pair: 1/2, half
0x0031                 1    0   2   Noise Word  1       0   Pair: 1/2, half
0x006E006E0031         1    0   2   Noise Word  nn1     0   Pair: 1/2, half
0x0032                 1    0   3   Noise Word  2       0   Pair: 1/2, half
0x006E006E0032         1    0   3   Noise Word  nn2     0   Pair: 1/2, half
0x00680061006C0066     1    0   4   Exact Match half    0   Pair: 1/2, half

FT 分解“1/2”并将其索引为 1、nn1、2 和 nn2('nn' 是数值的内部表示)。在这种情况下,将使用默认停止列表,这还会导致这些值被标记为噪声词,因此它们不会添加到索引中。通过从停止列表中删除条目或创建新的空白停止列表并将其与索引相关联,可以轻松规避这一点。

到目前为止,根本没有任何方法可以让 FT 忽略在这种情况下它被视为单词分隔符的“/”符号。

编辑- 显然,有一种解决方法,它涉及创建自定义字典,如此处详述。因此,对于英语,我在 Binn 目录中创建了一个“Custom0009.lex”文件,并为“/”添加了一个条目。这样做会显示 sys.dm_fts_parser 的以下输出(不要忘记重新启动 fdhost) -

select * from sys.dm_fts_parser(N'"Pair: 1/2, half"', 1033, NULL, 0)

keyword             group_id    phrase_id   occurrence  special_term    display_term    expansion_type  source_term
0x0070006100690072  1   0   1   Exact Match pair    0   Pair: 1/2, half
0x0031              1   0   2   Exact Match 1       0   Pair: 1/2, half
0x006E006E0031      1   0   2   Exact Match nn1     0   Pair: 1/2, half
0x002F              1   0   3   Exact Match /       0   Pair: 1/2, half
0x0032              1   0   4   Exact Match 2       0   Pair: 1/2, half
0x006E006E0032      1   0   4   Exact Match nn2     0   Pair: 1/2, half
0x00680061006C0066  1   0   5   Exact Match half    0   Pair: 1/2, half

希望这可以帮助。

于 2013-07-09T00:44:27.903 回答
0

我最好的猜测是全文搜索不支持“/”字符。我建议使用 LIKE,虽然速度较慢。

于 2013-04-04T20:48:45.713 回答