日期:2014-05-18  浏览次数:20437 次

请问如何实现s1l2005全文检索时用特殊字符来做干扰字?
SQL   2005   Sp2   中
想实现这样的效果:
select     P_intro
FROM   Product
WHERE   CONTAINS(P_Intro,   '昆山[ ');
GO

让系统自动把[]--,等特殊字符当成干扰词过滤掉


处理后的效果同这样
select     P_intro
FROM   Product
WHERE   CONTAINS(P_Intro,   '昆山 ');
GO

可是发现修改FTData\noiseCHS.txt,修改
?about
$   1   2   3   4   5   6   7   8   9   0   _   ,   [   ]  
……………



[
]
--

可是运行查询时会出错误
在全文搜索条件   '昆山[ '   内的   '[ '   附近存在语法错误。

想不要这个提示,查msdn提示
http://technet.microsoft.com/zh-cn/library/ms187914.aspx


-------------------------------------------------
transform   noise   words   选项

使用   transform   noise   words   选项可以取消干扰词导致全文查询的布尔操作失败时产生的错误消息。此选项对于使用其布尔操作包括干扰词的   CONTAINS   谓词的全文查询非常有用。

默认情况下,transform   noise   words   选项设置为   0,即不转换干扰词。因此,当全文查询中的干扰词导致操作失败时,Microsoft   SQL   Server   将引发警告,并且不返回任何行。
注意:
警告为运行时警告。因此,如果未执行全文查询子句,则不会引发警告。

对于本地查询,只引发一个警告,即使存在多个全文查询子句时也是如此。对于远程查询,链接服务器可能无法中继错误;因此,无法引发警告。

当   transform   noise   words   选项设置为   1   时,SQL   Server   将在短语查询中用星号   (*)   替换干扰词。
  示例

以下示例将   transform   noise   words   设置为   1。
复制代码

sp_configure   'show   advanced   options ',   1
RECONFIGURE
GO
sp_configure   'transform   noise   words ',   1
RECONFIGURE
GO
---------------------------------------------------------

执行后还是有个错误提示?如何既能正确过滤[又不出现错误提示




------解决方案--------------------
唉,向老大提问都没人敢来了
------解决方案--------------------
不懂,接分
------解决方案--------------------
用这样啊:
select P_intro 
FROM Product 
WHERE CONTAINS(P_Intro, '"昆山*"'); 
GO
------解决方案--------------------
replace函数
------解决方案--------------------
SQL Server Full Text Search Noise Words and Thesaurus Configurations
http://www.mssqltips.com/tip.asp?tip=1491
在你服务器上的特殊词组里面去掉这些试试,
$SQL_Server_Install_Path\Microsoft SQL Server\MSSQL.1\MSSQL\FTDATA\