0

假设我们有一个大的全文索引表,并且有一些这样的字符串(当然在全文索引列中):

123.456.789/14  
111.222.22222.2/5111

这些字符串是只有在完全按照我编写的方式查询时才有意义的数字(对于我的应用程序)。

当我执行这样的查询时:

WHERE CONTAINS(field, "5111");

它返回包含第二个字符串的行,但我执行它以不返回任何结果,因为除了字符串包含 5111 之外,它对我没有意义(仅对整个数字有意义,而不是其中的一部分)。

有什么办法可以避免像我提到的那样返回部分字符串?我猜 Sql server 正在处理“/”和“。” 作为停用词,我说得对吗?

4

1 回答 1

2

您的问题实际上与断词器有关,而不是停止词。

“/“ 和 ”。” 您正在使用的(我假设是英语)分词器将其视为单词分隔符。

可以安装自定义分词器,但我不确定这是否真的能解决您的问题,因为您希望“/”在单词周围而不是数字周围时被视为单词分隔符。

理论上可以启用自定义词典支持以允许指定包含被视为单词的单词分隔符的短语,但这可能无法提供您想要的。

从您的示例中,您可以使用自定义词典定义“789/14”和“2/5111”。这意味着搜索“789”、“14”、“2”或“5111”时不会返回这些行,但搜索“789/14”或“2/5111”时会返回这些行。

以下博客条目描述了在 SQL 2008 中设置自定义字典支持,但是我无法使其工作:

为要在 SQL Server 2008 全文索引中“按原样”编制索引的特殊术语创建自定义词典

于 2011-07-08T21:32:31.323 回答