MSSql全文搜索用点缩写的单词

时间:2011-09-12 07:56:14

标签: sql-server full-text-search

我一直在努力解决以下问题:

select * from table_name where contains((field1,field2),'"S.E.N.S"');

以下是我在字段1中的文字: " S.E.N.S Productions "

如果我搜索" 生产"我得到了结果,但不是" S.E.N.S "。

关于如何获得理想结果的任何想法?感谢。


更新:Sql Server版本是2005年的SP3。


更新:嗯,这很奇怪。当我设置全文使用noiseENG.txt时,我的问题中的查询工作正常。但是存储在数据库中的所有内容都是土耳其语,所有设置都相应地设置,包括noiseTRK.txt。 " S.E.N.S"据我所知,这不是土耳其语或英语。我可以将它设置为noiseENG.txt以使其工作,但我怀疑这是否合适。任何人都可以知道/想到为什么noiseTRK.txt会破坏上面的查询?感谢。

P.S。我已经测试了未经修改的噪音文件以及土耳其噪音文件的单字母删除版本。

1 个答案:

答案 0 :(得分:1)

开箱即用,它可能不适用于SQL 2005.

我记得,对于字符串“S.E.N.S Productions”,SQL 2005 FTS(全文搜索)断字符将忽略点击,并将字符串分成单个字母(S E N S)和单词“Productions”。默认情况下,单个字母是干扰词,因此不会包含在索引中。

你可以做几件事:

  1. 编辑您的干扰词列表并删除单个字母并重建索引
  2. 升级到SQL的更高版本,因为分词行为会更改为在2008年正确返回您的结果。