使用全文词库搜索搜索撇号

时间:2014-04-10 08:16:00

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

我正在尝试在我们的一个表上实现全文搜索,除了涉及到国际这个词之外,一切都运行顺畅。

在表格中,显示的字词形式为intlint'linternational,因此我将同义词库文件反映出来:

<expansion>
    <sub>intl</sub>
    <sub>int'l</sub>
    <sub>international</sub>
</expansion>

然而,在尝试此搜索时,它只会将intl和international与int'l匹配,需要精确搜索。有什么方法可以将撇号包含在搜索中吗?

相关的查询部分是这样的(不完全相同但相似):

SELECT * FROM CustomerTable Where contains((CustomerName), 'FORMSOF(Thesaurus, "int''l")')

我决定看看它使用

解析了哪些单词
SELECT display_term as term FROM sys.dm_fts_parser ('FORMSOF(Thesaurus, "int''l")', 0, null, 0)

结果显示它正在拆分 int l

+---------------+
|     term      |
+---------------+
| int           |
| l             |
| intl          |
| international |
+---------------+

1 个答案:

答案 0 :(得分:2)

问题是中性语言的断字词不允许用单词表示撇号。您可以将全文索引的语言切换为英语(并重新编制索引),或创建自己的自定义word-breaker以允许撇号。

互联网似乎缺少自定义断字符的示例,但您可以从查看构建SQL全文的Windows Search SDK开始:

Windows Search Developer's Guide

Windows Search: Extending the Index