我不太了解您为什么要使用FTS?如果您想要进行中,则只需使用LIKE即可完成:
SELECT * FROM test WHERE data like’%world%’
SELECT * FROM test WHERE data like’%j-world%’
如果您想玩FTS。
在SSMS Databases \ YourDatabaseName \ Storage \ Full Text Stoplist中->右键单击并选择“ New Full-text StopList …”。我将其命名为 ,并确保已选中默认的“创建空的syoplist”单选按钮。
在SSMS右键单击表dbo.test —>全文索引->属性—>选择页面:常规,全文索引Stoplist->输入创建的空列表的名称(我输入 )
现在,查询
从包含以下内容的测试中选择*(数据,““ j-world””))
仅返回“ Hello j-world”(没有“ Hello world”)
这也可以通过Tsql完成。关注msdn
====更新: 嗯,您的问题表明噪声的概念是主观的。
之所以起作用,是因为’j’是系统停用词(请参见,它通过’j’(3个符号)字符串搜索系统停用列表(),另请参阅(*)),而’-‘显然是断字符器。
我不建议您使用空停用词列表。我只是通过最少的努力就说明了“如何做”。 制定适合您的技术完全取决于您。我什至不是这个领域的专家以提供建议。我只是根据常识来回答你的
创建您自己的全文StopList,并用您的内容填充它。 您可能要重用系统非索引字表内容。 为此,您可能需要创建
然后通过 使用查找和替换和/或从( ) 复制并粘贴( )的副本来创建自己的脚本。
(**)以下摘录自系统FT StopList的脚本副本,我将其命名为vgv_sys_copy:
ALTER FULLTEXT STOPLIST [vgv_sys_copy] ADD 'j' LANGUAGE 'French';
ALTER FULLTEXT STOPLIST [vgv_sys_copy] ADD 'j' LANGUAGE 'Italian';
ALTER FULLTEXT STOPLIST [vgv_sys_copy] ADD 'j' LANGUAGE 'Japanese';
ALTER FULLTEXT STOPLIST [vgv_sys_copy] ADD 'j' LANGUAGE 'Dutch';
ALTER FULLTEXT STOPLIST [vgv_sys_copy] ADD 'j' LANGUAGE 'Russian';
ALTER FULLTEXT STOPLIST [vgv_sys_copy] ADD 'j' LANGUAGE 'Swedish';
ALTER FULLTEXT STOPLIST [vgv_sys_copy] ADD 'j' LANGUAGE 'Simplified Chinese';
ALTER FULLTEXT STOPLIST [vgv_sys_copy] ADD 'j' LANGUAGE 'British English';
我在索引列上发布了子问题,即在LIKE上使用FTS进行FTS搜索,获得了子问题?
我还注意到我是根据sql Server 2005中不可用的功能回答的, 应该有MSsql \ FTData \ noiseENG.txt,我喜欢Sql Server 2005全文本搜索中“噪音词”的答案
我会删除“ j”。实际上,如果我是您,那么我将从头开始创建noiseENG.txt。但这是您的决定,具体取决于您的背景和我未知的多个因素。
我相信您应该将其作为单独的问题发布。我已经在StackExchange网站上被禁止了多次讨论(现在仍然在SF中)进行讨论。这不是论坛或讨论区,请参阅。常问问题。