您的位置:首页 > 数据库

HubbleDotNet 开源全文搜索数据库项目--Match 方式

2010-09-16 08:04 423 查看





图1Match匹配示意图

如图1所示Match方式匹配方式是对指定字段按单词分量或的方式进行匹配,匹配相关度计算中同时考虑单词出现的频率和单词在文章中的位置。

对单个字段按或方式匹配

搜索标题中包含“北京”“大学”两个关键字的所有记录,并按照得分的大小排倒序SQL语句:
selecttop10*fromCNewswheretitlematch'北京^5000^0大学^5000^2'orderbyscoredesc

单词分量后面跟的参数^5000^0含义如下
第一个参数表示这个单词分量的权值,这里为5000。
第二个参数表示这个单词分量在输入的被搜索的句子中的其实位置,如这里“北京”的位置为0,大学的起始位置为2.
top10表示输出前10条匹配的记录
Score为得分,这个是一个动态字段。
结果:




对多个字段匹配并分页

搜索标题或内容中包含“北京”“大学”两个关键字的所有记录,并按照得分的大小排倒序
SQL语句:
selectbetween0to9*fromCNewswheretitle^2match'北京^5000^0大学^5000^2'or
contentmatch'北京^5000^0大学^5000^2'orderbyscoredesc

这里title字段后跟了一个参数2,这个参数表示title字段的权值为2,也就是说通过这种方法对字段设置权值。
between0to9表示输出0到9范围内的记录,这种方法可以用于分页显示。

结果:



和Untokenized类型字段组合查询

搜索标题中包含“北京”“大学”两个关键字的,并且时间大于2007年1月1日小于2007年8月16日的所有记录,并按照时间排倒序
SQL语句:
selecttop10*fromCNewswheretitle^2match'北京^5000^0大学^5000^2'andtime>'2007-1-1'and
time<'2007-8-16'orderbytimedesc

结果:




按多字段排序

搜索标题中包含“北京”“大学”两个关键字的,并且时间大于2007年1月1日小于2007年8月16日的所有记录,并按照时间和得分同时排倒序
即先按时间排序,时间相同的记录,得分高的排前面。
SQL语句:
selecttop10*fromCNewswheretitle^2match'北京^5000^0大学^5000^2'
orderbytimedesc,scoredesc

结果:




在搜索结果中查找

在match'abc^5000^0news^5000^3to^5000^7cut^5000^9'的结果中再查找包含Staff这个词的记录
SQL语句:
selecttop10Id,Title,ScorefromEnglishNewswheretitlematch'abc^5000^0news^5000^3to^5000^7cut^5000^9'
andtitlecontains'Staff'orderbyscoredesc

结果:



搜索结果中不包含

在match'abc^5000^0news^5000^3to^5000^7cut^5000^9'的结果中再查找不含包含Staff这个词的记录
SQL语句:
selecttop10Id,Title,ScorefromEnglishNewswheretitlematch'abc^5000^0news^5000^3to^5000^7cut^5000^9'
andtitlenotcontains'Staff'orderbyscoredesc

结果:




返回Hubble.net技术详解
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: