首先你怎么可以不给分。
第一个问题:没有经过任何排序怎么又会按照相关度排序呢?一般的搜索框架的结果肯定是排序过的,如果你是针对莫一种搜索框架的请告之,比如lucene有相应的score来排序不知道算不算是你说的相关度。
第二个问题:相关度这个概念太泛泛了。
第三个问题:同上。
PS:建议问的时候说明清楚具体的框架和组件,如果是理论上的请具体到理论;
因为此人已经没有圆豆?
1. 我还没对全文索引有深的研究,只是以前零星的看过一些文章,印象不太深了,我理解的相关度的意思是信息与关键字的匹配程度。
2. 没有经过任何排序的意思是没有加order by,比如:
select *
from t1
where freetext(*, '关键字')
这样查出来的一个序列它是按什么排序的?记录存储的物理顺序?还是相关度从高到低排的?
3. 我想像中的答案是会有一种方法可以获取到每条记录的相关度的值,然后可以写到Order by里,然后用row_number去分页。
您的回答我也云里雾里,难道我的问题太傻了?没问到点子上?
哎,没豆受人鄙视真不好意思,我这就去答几个问题赚点钱去。
@灰灰狼:
对于你的回答我理解为是在sql server中全文搜索的默认排序,你可以检索下相关资料。
默认排序方式在你安装sqlserver的时候就被指定。
比如一般中文版是Chinese_PRC_CI_AI_WS
前半部份:指UNICODE字符集,Chinese_PRC_指针对大陆简体字UNICODE的排序规则。
排序规则的后半部份即后缀 含义:
_BIN 二进制排序
_CI(CS) 是否区分大小写,CI不区分,CS区分
_AI(AS) 是否区分重音,AI不区分,AS区分
_KI(KS) 是否区分假名类型,KI不区分,KS区分
_WI(WS) 是否区分宽度 WI不区分,WS区分 区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。
区分重音:如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项,
比较还将重音不同的字母视为不等。
区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。
区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项
希望能帮助到你,建议使用lucene会快很多很多。
@今昭: 你说的是order by子句的排序规则吧,我想知道的是
select *
from t1
where freetext(*, '关键字')
没有order by的时候,是按什么排的序?
@灰灰狼: 这个不是order by的规则,就是“默认”的规则,也就是你没有指定order by的时候的规则。
@今昭: 明儿我还是自己查查资料吧,我觉得全文索引应该有个相关度的概念,就是说跟关键字的匹配程度,相关程度,然后有那么一种SQL的写法可以得到代表这种程度的数值,然后能按这个值来排序。知识结构完全空白,不了解啥框架,现在找下lucene的资料睡觉啦。
@灰灰狼: sql server只是关系型数据库,全文搜索不是它的强项。
回楼主话,你的问题却没问到点子上,导致别人的回答是云里雾里
已解决,用FREETEXTTABLE
怎么解决这个排序问题的???求分享