首页新闻找找看学习计划

SQL中全文搜索怎么提高效率啊?

0
悬赏园豆:100 [已解决问题] 解决于 2014-03-23 22:14

我有一批中医古籍资料,存在两张表中。一张表主要存标题,一张存标题对应的内容(内容很大,最大可达3M每条)。

数据量较大,存在SQL中大概有1G左右大小,记录条数23万条左右。

主要有标题和内容两列需要搜索,两个字段类型都是NVARCHAR(MAX),内容列的最大长度有3M。我想通过输入用空格分开的多关键字检索数据,现在用LIKE匹配或用CHARINDEX都很慢。经常超时,查询时间超过30s。

要查的关键字没有常用的,因为是想根据多个症状关键字搜,标题和内容里都是古文,所以根据常用关键字建立索引的做法不可取。

想知道有没有对这样的需求的解决方案?全文搜索

沧海一杰的主页 沧海一杰 | 初学一级 | 园豆:28
提问于:2014-03-21 20:00
< >
分享
最佳答案
0

最终使用了SQL2005自带的全文索引,速度还可以。

沧海一杰 | 初学一级 |园豆:28 | 2014-03-23 22:14
其他回答(2)
0

这个用Lucene.Net来建立索引,用盘古分词和高亮搜索关键字,园里有好多这样的文章,使用也不麻烦

收获园豆:50
秋壶冰月 | 园豆:5441 (大侠五级) | 2014-03-21 20:24

据我之前的了解,使用Lucene搜索,是有一定的命中机率的。 他也是会预生成一些个关键字等你来搜,如果他的分词算法生成的关键字里没有我搜索的关键字,有可能部分文章是搜不到的。是这样吗?这个搜索是100%可靠性吗?

支持(0) 反对(0) 沧海一杰 | 园豆:28 (初学一级) | 2014-03-21 20:43
0

就用Lucene.Net吧,它内置的是一元分词,所以大家都会搭配 盘古分词 来使用,不会预生成关键字,都说了是全文检索嘛!!至于可靠性,你的文章中的词语教新的话,你可以下载搜狗的医学方面的词库,然后用工具转换格式,导入到“判断分词”下面的词库文件里面去。。。。。。。

收获园豆:50
流光_ | 园豆:82 (初学一级) | 2014-03-21 21:15

我看到SQL2005也有了全文检索功能,比Lucenne.Net有什么优缺点吗? Lucene.Net好像官方停止升级了

支持(0) 反对(0) 沧海一杰 | 园豆:28 (初学一级) | 2014-03-22 11:27

@沧海一杰: sql自带的全文检索,用起来,比较简单,一两天就能搞定

支持(0) 反对(0) 流光_ | 园豆:82 (初学一级) | 2014-03-22 13:06

@流光布落格: 又发了两贴,用起来还是有问题啊,EF不支持,无法参数化。

支持(0) 反对(0) 沧海一杰 | 园豆:28 (初学一级) | 2014-03-22 13:10

@沧海一杰: 我没有尝试过,就一个搜索功能,变通下,搜索直接用ADO.NET嘛,自己写SQL语句,select * from table where contains.......

支持(0) 反对(0) 流光_ | 园豆:82 (初学一级) | 2014-03-22 13:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册