我正在尝试在我们的一个表上实现全文搜索,除了涉及到国际这个词之外,一切都运行顺畅。
在表格中,显示的字词形式为intl
,int'l
和international
,因此我将同义词库文件反映出来:
<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 |
+---------------+
答案 0 :(得分:2)
问题是中性语言的断字词不允许用单词表示撇号。您可以将全文索引的语言切换为英语(并重新编制索引),或创建自己的自定义word-breaker以允许撇号。
互联网似乎缺少自定义断字符的示例,但您可以从查看构建SQL全文的Windows Search SDK开始: