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

全文索引问题,正解即结贴
在数据库的表T_orderform中我存储的数据有passengers列都是像这样的
"关傲翔|TSUNO/HISASH|殷晓磊|廖凤彪|齐林|陈彬|胡艳萍|张卫军|董长福"
"董长福|FUKUMORI/KOICHI|陈斌|陈TING|胡艳萍"
用这样的查询数据
select passengers,* from T_orderform where contains(passengers,'董长福')---能查出一行
select passengers,* from T_orderform where passengers like '%胡艳萍%'--能查两行出来
这样全文索引就没有办法了吗?用like实在是太慢了。请各位高人解答,正解即结贴


------解决方案--------------------
你有没有把:董长福这个数据的位置和胡艳萍的位置兑换一下?好久没搞全文索引了。猜一下
------解决方案--------------------
还不会全文索引,帮顶·看楼下大牛神解
------解决方案--------------------
LZ
这个明显是爬网的问题(建立全文目录的时候,断字的处理需要关注)

------解决方案--------------------
我刚才自己做了测试,用全文索引可以搜索出两条记录,不知道你是怎么设置的,下面是我的SQL语句,供参考
SQL code

use testdb

execute sp_fulltext_database 'enable'

execute sp_fulltext_catalog 'FT_testdb','create'

execute sp_fulltext_table T_orderform,'create','FT_testdb','PK__T_orderform__0EA330E9'

execute sp_fulltext_column 'T_orderform','passengers','add'

execute sp_fulltext_table T_orderform,'activate'

execute sp_fulltext_catalog 'FT_testdb','start_full'


-------------------------------------


if object_id('T_orderform') is not null drop table T_orderform
go
create table T_orderform(id int identity(1,1) primary key,passengers nvarchar(100))
go
insert into T_orderform(passengers)
select N'关傲翔|TSUNO/HISASH|殷晓磊|廖凤彪|齐林|陈彬|胡艳萍|张卫军|董长福' union all
select N'董长福|FUKUMORI/KOICHI|陈斌|陈TING|胡艳萍'
go
select * from T_orderform
where contains(passengers,N'董长福')

/*
id          passengers
----------- ----------------------------------------------------------------
1           关傲翔|TSUNO/HISASH|殷晓磊|廖凤彪|齐林|陈彬|胡艳萍|张卫军|董长福
2           董长福|FUKUMORI/KOICHI|陈斌|陈TING|胡艳萍
*/