我有一个数据库,大概有30万条记录,不算很多,但我查找资源都是用like '%keyword%' 来检索的,这样做不但速度慢而且CPU占用也很高,后来有朋友告诉我要建立全文检索,那么用like '%keyword%'速度就会提高
我按照步骤建立全文检索后,不但搜索速度没提高,而且原来用like能找到50条数据的,现在只能找到两条了,不知道是怎么回事情,哪位高手能帮帮我吗? 我已经把我的数据库备份出来了 http://lelewap.cn/ring.rar
麻烦高手们帮帮我,谢谢了我是用contains来查询的
我按照步骤建立全文检索后,不但搜索速度没提高,而且原来用like能找到50条数据的,现在只能找到两条了,不知道是怎么回事情,哪位高手能帮帮我吗? 我已经把我的数据库备份出来了 http://lelewap.cn/ring.rar
麻烦高手们帮帮我,谢谢了我是用contains来查询的
1.建完全文索引就不需要LIKE查询了,用类似这样的查询就行了,select [filed] from [table] where contains(filed,'keywords');
2.全文检索是有切词的,有准确率的要求,所以不会有LIKE那么多的结果,比如,字段里包含了“数据”、“数据库”、“数据压缩”,则你用LIKE时会全部检索出来,而用contains(filed,'数据'),则后两个就不会出现。如果你需要的时模糊查询,就需要用AND、OR等构造。以下是contains谓词的语法,你可以参考以下:
CONTAINS
( { column | * } , '< contains_search_condition >'
)
< contains_search_condition > ::=
{ < simple_term >
| < prefix_term >
| < generation_term >
| < proximity_term >
| < weighted_term >
}
| { ( < contains_search_condition > )
{ AND | AND NOT | OR } < contains_search_condition > [ ...n ]
}
< simple_term > ::=
word | " phrase "
< prefix term > ::=
{ "word * " | "phrase * " }
< generation_term > ::=
FORMSOF ( INFLECTIONAL | THESAURUS , < simple_term > [ ,...n ] )
< proximity_term > ::=
{ < simple_term > | < prefix_term > }
{ { NEAR | ~ } { < simple_term > | < prefix_term > } } [ ...n ]
< weighted_term > ::=
ISABOUT
( { {
< simple_term >
| < prefix_term >
| < generation_term >
| < proximity_term >
}
[ WEIGHT ( weight_value ) ]
} [ ,...n ]
)
建立以后就用单词检索
简单说
以前apple用app,ple,ppl都能检索出来
但是用索引,因为apple是一个单词,在索引里是一个关键字,所以只有用apple才能检索出来
检索的结果就自然便少了