日期:2014-05-17  浏览次数:20444 次

全文检索无法检索数字的内容吗?
本帖最后由 lzf1010 于 2013-08-22 15:43:27 编辑
对一个表的若干字段建立全文索引,其中一个字段是存储电话号码的。填充完毕后,测试一下,发现其他都一切正常,就是输入电话号码无法检索出来。比如其中一个电话号码是86-010-80870409,用户输入80870409后,程序生成的查询语句是select * from table1 where contains(*,'80870409'),结果查询不出任何内容。请教该如何处理才能正确的查询出来?

------解决方案--------------------
try this,

select * from table1 where contains(*,'"80870409*"')

------解决方案--------------------
contains()用法参考 http://msdn.microsoft.com/zh-cn/library/ms187787(v=sql.105).aspx


--使用contains关键字进行全文索引
 
--1.前缀搜索
select name from tb where contains(name,'"china*"')
/*--注意这里的* 返回结果会是 chinax chinay chinaname china  
--返回前缀是china的name 
--如果不用“”隔开 那么系统会都城 contains(name,'china*') 与china* 匹配*/
 
--2.使用派生词搜索
select name from tb where contains(name,'formsof(inflectional,"foot")')
/* 出来结果可能是 foot feet (所有动词不同形态 名词单复数形式)*/
 
--3.词加权搜索
select value from tb where contains(value , 'ISABOUT(performance weight(.8))')
/*全值用0-1的一个数字表示 表示每个词的重要程度*/
 
--4.临近词搜素
select * from tb where contains(document,'a near b')
/* 出来的结果是“a”单词与“b”单词临近的document 
可以写成 contains(document,'a ~ b')
*/
--5.布尔逻辑搜素
select * from tb where contains(name,'"a" and "b"')
/*返回既包含A 又包含 B单词的行 
当然 这里的AND 关键字还有换成 OR ,AND NOT 等
*/

参考 http://www.cnblogs.com/cs_net/articles/2085465.html