SQL全文索引问题

时间:2010-04-09 17:56:06

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

更新:我已经找到了一种使用动态sql形式解决此问题的方法,无论如何都要感谢任何帮助。

嗨,我需要使用全文索引来完成一些事情。就是这样:

问题的实际情况是,当我运行一个看起来像的查询(带有一个存储过程)时(带有一个明显在上面定义的参数(@name)(此处未显示),此参数被发送到存储过程通过asp.net页面,来自用户输入):

选择

名称

FROMdbo.UsersTable

WHERE

FREETEXT(姓名,@姓名)

嗯,事实是这样的查询会返回值,如果参数@ name的值是Joe,并且说有10条名字的记录,其中有Joe,但是@ name的值是只是Jo,然后它什么也没有返回,这就是问题所在。假设此表中还有其他记录中包含Jo,例如Jole或John。

所以真正的问题是,我如何让它返回不是完整单词或短语的值,而只是单词/短语的一部分(如上所述)?像FREETEXT(Name,@ name *)一样,不允许用作查询,但是,你明白了。

有没有办法实现这个目标?我敢肯定,我需要弄明白这一点。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

全文搜索确实应该用作基于整个单词的自然语言搜索,但是您可以使用CONTAINS使用"Jo*"来查找单词后缀(不是子字符串),格式为{{{ 1}}

SELECT Name FROM dbo.UsersTable WHERE CONTAINS(Name, '"' + @NAME + '*"')