【发明内容】
基于此,有必要提供一种可提高操作上方便性的搜索结果排序方法。
此外,还有必要提供一种可提高操作上方便性的搜索结果排序系统。
一种搜索结果排序方法,包括如下步骤:
根据关键字进行查询得到搜索结果以及所述搜索结果与所述关键字之间的相关度;
逐一提取搜索结果及对应的相关度,并从所述搜索结果中获取相关度大于所述提取的搜索结果的相关度的搜索结果;
判断所述获取到的搜索结果是否为所述提取的搜索结果的子串,若是,则调整所述提取的搜索结果的相关度;
根据所述调整后的搜索结果的相关度对搜索结果进行排序。
优选地,所述逐一提取搜索结果及对应的相关度,并从所述搜索结果中获取相关度大于所述提取的搜索结果的相关度的搜索结果的步骤为:
根据所述搜索结果的相关度按照从大到小的顺序对所述搜索结果进行排列;
从排列的搜索结果中获取设定数量的排序靠前的搜索结果;
从获取的搜索结果中提取搜索结果,并获取所述提取的搜索结果之前的搜索结果。
优选地,所述调整所述提取的搜索结果的相关度的步骤为:
将所述提取的搜索结果的相关度与设定的参数相减得到降低后的相关度。
优选地,所述根据所述调整后的搜索结果的相关度对搜索结果进行排序的步骤之前还包括:
获取所述设定的参数中的最大值;
将所述排列的搜索结果中设定数量的排序靠前的搜索结果的相关度与所述设定的参数中的最大值相加得到调整后的相关度。
优选地,所述逐一提取搜索结果及对应的相关度,并从所述搜索结果中获取相关度大于所述提取的搜索结果的相关度的搜索结果的步骤之前还包括:
判断所述关键字是否为泛关键字,若是,则进入逐一提取搜索结果及对应的相关度,并从所述搜索结果中获取相关度大于所述提取的搜索结果的相关度的搜索结果的步骤。
一种搜索结果排序系统,包括:
查询模块,用于根据关键字进行查询得到搜索结果以及所述搜索结果与所述关键字之间的相关度;
处理模块,用于逐一提取搜索结果及相关度,并从所述搜索结果中获取相关度大于所述提取的搜索结果的相关度的搜索结果;
结果判断模块,用于判断所述获取到的搜索结果是否为所述提取的搜索结果的子串,若是,则调整所述提取的搜索结果的相关度;
排序模块,用于根据所述调整后的搜索结果的相关度对搜索结果进行排序。
优选地,所述处理模块包括:
排列单元,用于根据所述搜索结果的相关度按照从大到小的顺序对所述搜索结果进行排列;
结果获取单元,用于从排列的搜索结果中获取设定数量的排序靠前的搜索结果,从获取的搜索结果中提取搜索结果,并获取所述提取的搜索结果之前的搜索结果。
优选地,所述排序模块还用于将所述提取的搜索结果的相关度与设定的参数相减得到降低后的相关度。
优选地,还包括:
参数获取模块,用于获取所述设定的参数中的最大值;
调整模块,用于将所述排列的搜索结果中设定数量的排序靠前的搜索结果的相关度与所述设定的参数中的最大值相加得到调整后的相关度。
优选地,还包括:
关键字判断模块,用于判断所述关键字是否为泛关键字,若是,则逐一提取搜索结果及对应的相关度,并从所述搜索结果中获取相关度大于所述提取的搜索结果的相关度的搜索结果。
上述搜索结果排序方法及系统,逐一提取搜索结果以及相关度,并从查询得到的搜索结果中获取相关度大于提取的搜索结果的相关度的搜索结果,若获取的搜索结果为提取的搜索结果的子串,则通过调整提取的搜索结果的相关度来对所有的搜索结果进行调整,将原本按照相关度的大小进行排列的搜索结果重新排列,以避免连续出现非常类似的搜索结果,从而丰富页面内容,提高了页面的信息含量,用户不需要进行多次翻页即可查看各种各样的搜索结果,提高了操作上的方便性。
【具体实施方式】
图1示出了一个实施例中搜索结果排序的方法流程,包括如下步骤:
步骤S110,根据关键字进行查询得到搜索结果以及搜索结果与关键字之间的相关度。
本实施例中,进行某一关键字的查询时会在相关的数据库中查找到与关键字相关的搜索结果,并通过相关性分析得到搜索结果与关键字之间的相关度,将搜索结果返回给用户。搜索结果是用户通过关键字的查询所得到的与关键字相关的记录,搜索结果的相关度则说明了搜索结果与关键字的匹配程度,相关度越高,对应的搜索结果与关键字的匹配程序也越高。例如,在地图搜索应用中,用户在浏览器所提供的北京市电子地图界面中提交包含了关键字“银行”的搜索请求,此时,经过查找得出北京市电子地图中与银行相关的兴趣点,该兴趣点即为本次搜索所得到的搜索结果,是一条包含名称、地址、坐标、所在行政区域等信息的记录,并在电子地图中显示出来。
步骤S130,逐一提取搜索结果及对应的相关度,并从搜索结果中获取相关度大于提取的搜索结果的相关度的搜索结果。
本实施例中,在搜索结果中,逐一提取一个搜索结果,并获取相关度大于这一搜索结果的相关度的其他搜索结果。为了方便进行搜索结果的有序管理,可按照相关度从大到小的顺序对一一提取搜索结果,由于不存在大于相关度最大的搜索结果的其他搜索结果,因此,不需要提取相关度最大的搜索结果。
在一个实施例中,在上述步骤S130之前还包括:
判断关键字是否为泛关键字,若是,则进入逐一提取搜索结果及对应的相关度,并从搜索结果中获取相关度大于提取的搜索结果的相关度的搜索结果的步骤,若否,则按照相关度对搜索结果进行排序。
本实施例中,泛关键字为类别名称、产品或服务统称等具有广泛意义的关键词,例如,银行、饭店、美食、电脑、笔记本、台式机、服务器、显示器、家具等都是泛关键字。在实际的搜索应用中,对于某个具体的建筑、学校等关键字,用户还是希望返回的搜索结果中排列在前面的搜索结果是与关键字紧密相关且最为匹配的,此时,不需要对搜索结果的相关度进行调整,仅按照查询得到的相关度从大到小的顺序对搜索结果进行排序即可。
具体地,可列举一些泛关键字,并存储起来。在接收到用户提交的搜索请求时,将搜索请求中的关键字与存储的泛关键字进行比对,若搜索请求中的关键字与存储的任一泛关键字相似,则进入逐一提取搜索结果及相关度,并从搜索结果中获取相关度大于提取的相关度的搜索结果的步骤,以进行搜索结果相关度的调整,若关键字与存储的泛关键字是不相似的,则按照相关度从大到小的顺序对搜索结果进行排序。
在一个具体的实施例中,如图2所示,上述步骤S130的具体过程为:
步骤S131,根据搜索结果的相关度按照从大到小的顺序对的搜索结果进行排列。
本实施例中,将查询得到的所有搜索结果按照相关度从大到小的顺序进行排列,以将与关键字最为匹配的搜索结果排列在前面,与关键字不太匹配的搜索结果排在后面。
步骤S133,从排列的搜索结果中获取设定数量的排序靠前的搜索结果。
本实施例中,对一个关键字进行查询所得到的搜索结果数量常常是非常多的,对所有的搜索结果都进行逐一提取和后续处理过程所造成的处理量和计算复杂都是非常高的,例如,若搜索结果有1000个,则需要进行999次提取操作,且在后续的判断过程中需要将提取到的所有搜索结果进行一一比对,以判断出获取的搜索结果是否为提取的搜索结果的子串,这时,则需要花费一百万次比对操作,因此,为了减轻计算负担,对按照相关度从大到小的顺序排列的搜索结果划定调整界线,仅对前N个搜索结果进行调整,并重新排序,而N+1个搜索结果之后的所有搜索结果相关度是不发生变化的,并且搜索结果是按照相关度从大到小的顺序进行排列。
步骤S135,从获取的搜索结果中提取搜索结果,并获取提取的搜索结果之前的搜索结果。
本实施例中,在按照相关度从大到小的顺序排列的搜索结果中,逐一提取搜索结果,并获取这一提取的搜索结果之前的所有搜索结果。
在得到提取的搜索结果和获取到的搜索结果后,判断每一个获取到的搜索结果是否为提取的搜索结果的子串,若是,则调整搜索结果的相关度。
步骤S150,判断获取到的搜索结果是否为提取的搜索结果的子串,若是,则进入步骤S170,若否,则结束。
本实施例中,子串指的是从某一字符串中所包含的连续的字符串,例如,在adbcd这一字符串中,ad和dcd都是其子串。
获取到的搜索结果大都为多个,因此,需要将提取的搜索结果与每一获取到的搜索结果进行一一比对,判断获取到的搜索结果是否为提取的搜索结果的子串,若是,则调整这一提取的搜索结果的相关度。
步骤S170,调整提取的搜索结果的相关度。
步骤S190,根据调整后的搜索结果的相关度对搜索结果进行排序。
本实施例中,由于有的搜索结果的相关度是经过了调整的,因此,按照相关度排列所得到的搜索结果序列中,处于调整范围内的搜索结果不会出现连续几个部分或者完全重复的情况。
优选的实施例中,上述根据搜索结果的相关度对搜索结果进行排序的步骤为:将提取的搜索结果的相关度与设定的参数相减得到降低后的相关度。降低相关度的过程如以下公式所示:
Score[i]=Score[i]-Q
其中,Score[i]为第i个搜索结果的相关度;Q为参数,可根据实际需要设定。
在实际的运行过程中,若判断到获取到的搜索结果为提取的搜索结果的子串,则进一步判断获取到的搜索结果与提取的搜索结果是否完全重复,若是,则将提取的搜索结果的相关度与参数Q1相减得到降低后的相关度,若否,则说明获取到的搜索结果与提取的搜索结果仅仅是部分重复,将提取的搜索结果的相关度与参数Q2相减以得到降低后的相关度。其中,参数Q1和参数Q2是根据需要进行设定的两个参数。
在另一个实施例中,如图3所示,上述搜索结果排序方法的根据调整后的搜索结果的相关度对搜索结果进行排序的步骤之前还包括了以下步骤:
步骤S310,获取设定的参数中的最大值。
本实施例中,在降低了搜索结果的相关度后,例如,若对前N个搜索结果进行了调整,则调整后的所有搜索结果相关度都可能下降,而第N+1个之后的搜索结果相关度是不变的,此时由相关度所进行的搜索结果排列将会造成前N个搜索结果可能会和第N+1个之后的搜索结果混合在一起,而在降低搜索结果的相关度时所使用的参数可根据实际需要可能会有所不同,为了仅调整前N个搜索结果,需要获取降低搜索结果的相关度过程中所使用参数的最大值。
步骤S330,将排列的搜索结果中设定数量的排序靠前的搜索结果的相关度与最大参数相加得到调整后的相关度。
本实施例中,将从排列的搜索结果中获取到的设定数量的排序靠前的所有搜索结果相关度都与最大参数相加得到了调整后的相关度,实现了仅对设定的调整范围内的搜索结果进行调整,在满足用户对搜索结果的需求的同时不影响搜索结果整体的排序,调整后的搜索结果相关度仍大于调整范围之外的搜索结果相关度。
图4示出了一个实施例中搜索结果排序系统的详细结构,包括查询模块10、处理模块30、结果判断模块50以及排序模块70。
查询模块10,用于根据关键字进行查询得到搜索结果以及搜索结果与关键字之间的相关度。
本实施例中,查询模块10进行某一关键字的查询时会在相关的数据库中查找到与关键字相关的搜索结果,并通过相关性分析得到搜索结果与关键字之间的相关度,将搜索结果返回给用户。搜索结果是用户通过关键字的查询所得到的与关键字相关的记录,搜索结果的相关度则说明了搜索结果与关键字的匹配程度,相关度越高,对应的搜索结果与关键字的匹配程序也越高。例如,在地图搜索应用中,用户在浏览器所提供的北京市电子地图界面中提交包含了关键字“银行”的搜索请求,此时,经过查询模块10的查找得出北京市电子地图中与银行相关的兴趣点,该兴趣点即为本次搜索所得到的搜索结果,是一条包含名称、地址、坐标、所在行政区域等信息的记录,并在电子地图中显示出来。
处理模块30,用于逐一提取搜索结果及相关度,并从搜索结果中获取相关度大于提取的搜索结果的相关度的搜索结果。
本实施例中,在搜索结果中,处理模块30逐一提取一个搜索结果,并获取相关度大于这一搜索结果的相关度的其他搜索结果。为了方便进行搜索结果的有序管理,可按照相关度从大到小的顺序对一一提取搜索结果,相关度最大的搜索结果由于不存在大于相关度最大的搜索结果的其他搜索结果,因此,不需要提取相关度最大的搜索结果。
在另一个实施例中,如图5所示,上述搜索结果排序系统还包括了关键字判断模块20,关键字判断模块20用于判断关键字是否为泛关键字,若是,则通知处理模块30。
泛关键字为类别名称、产品或服务统称等具有广泛意义的关键词,例如,银行、饭店、美食、电脑、笔记本、台式机、服务器、显示器、家具等都是泛关键字。在实际的搜索应用中,对于某个具体的建筑、学校等关键字,用户还是希望返回的搜索结果中排列在前面的搜索结果是与关键字紧密相关且最为匹配的,此时,不需要对搜索结果的相关度进行调整,仅按照查询得到的相关度从大到小的顺序对搜索结果进行排序即可。
具体地,可列举一些泛关键字,并存储起来。在接收到用户提交的搜索请求时,关键字判断模块20将搜索请求中的关键字与存储的泛关键字进行比对,若搜索请求中的关键字与存储的任一泛关键字相似,则进入逐一提取搜索结果及相关度,并从搜索结果中获取相关度大于提取的相关度的搜索结果的步骤,以进行搜索结果相关度的调整,若关键字与存储的泛关键字是不相似的,则按照相关度从大到小的顺序对搜索结果进行排序。
在一个具体的实施例中,如图6所示,处理模块30包括排列单元310以及结果获取单元330。
排列单元310,用于根据搜索结果的相关度按照从大到小的顺序对搜索结果进行排列。
本实施例中,排列单元310将查询得到的所有搜索结果按照相关度从大到小的顺序进行排列,以将与关键字最为匹配的搜索结果排列在前面,与关键字不太匹配的搜索结果排在后面。
结果获取单元330,用于从排列的搜索结果中获取设定数量的排序靠前的搜索结果,从获取的搜索结果中提取搜索结果,并获取提取的搜索结果之前的搜索结果。
本实施例中,对一个关键字进行查询所得到的搜索结果数量常常是非常多的,对所有的搜索结果都进行逐一提取和后续处理过程所造成的处理量和计算复杂都是非常高的,例如,若搜索结果有1000个,则需要进行999次提取操作,且在后续的判断过程中需要将提取到的所有搜索结果进行一一比对,以判断出获取的搜索结果是否为提取的搜索结果的子串,这时,则需要花费一百万次比对操作,因此,为了减轻计算负担,结果获取单元330对按照相关度从大到小的顺序排列的搜索结果划定调整界线,仅对前N个搜索结果进行调整,并重新排序,而N+1个搜索结果之后的所有搜索结果相关度是不发生变化的,并且搜索结果是按照相关度从大到小的顺序进行排列。
在按照相关度从大到小的顺序排列的搜索结果中,结果获取单元330逐一提取搜索结果,并获取这一提取的搜索结果之前的所有搜索结果。
在得到提取的搜索结果和获取到的搜索结果后,通过结果判断模块50判断每一个获取到的搜索结果是否为提取的搜索结果的子串,若是,则调整搜索结果的相关度。
结果判断模块50,用于判断获取到的搜索结果是否为提取的搜索结果的子串,若是,则调整提取的搜索结果的相关度,若否,则停止执行。
本实施例中,子串指的是从某一字符串中所包含的连续的字符串,例如,在adbcd这一字符串中,ad和dcd都是其子串。
获取到的搜索结果大都为多个,因此,需要结果判断模块50将提取的搜索结果与每一获取到的搜索结果进行一一比对,判断获取到的搜索结果是否为提取的搜索结果的子串,若是,则调整这一提取的搜索结果的相关度。
排序模块70,用于根据调整后的搜索结果的相关度对搜索结果进行排序。
本实施例中,由于有的搜索结果的相关度是经过了调整的,因此,排序模块70按照相关度排列所得到的搜索结果序列中,处于调整范围内的搜索结果不会出现连续几个部分或者完全重复的情况。
优选的实施例中,排序模块70还用于将提取的搜索结果的相关度与设定的参数相减得到降低后的相关度。排序模块70降低相关度的过程如以下公式所示:
Score[i]=Score[i]-Q
其中,Score[i]为第i个搜索结果的相关度;Q为参数,可根据实际需要设定。
在实际的运行过程中,结果判断模块50若判断到获取的搜索结果为提取的搜索结果的子串,则进一步判断获取的搜索结果与提取的搜索结果是否完全重复,若是,则排序模块70将提取的搜索结果的相关度与参数Q1相减得到降低后的相关度,若否,则说明查找的搜索结果与提取的搜索结果仅仅是部分重复,排序模块70将提取的搜索结果的相关度与参数Q2相减以得到降低后的相关度。其中,参数Q1和参数Q2是根据需要进行设定的两个参数。
在另一个实施例中,如图7所示,上述搜索结果排序系统还包括了参数获取模块40以及调整模块60。
参数获取模块40,用于获取设定的参数中的最大值。
本实施例中,在降低了搜索结果的相关度后,例如,若对前N个搜索结果进行了调整,则调整后的所有搜索结果相关度都可能下降,而第N+1个之后的搜索结果相关度是不变的,此时由相关度所进行的搜索结果排列将会造成前N个搜索结果可能会和第N+1个之后的搜索结果混合在一起,而在降低搜索结果的相关度时所使用的参数可根据实际需要可能会有所不同,为了仅调整前N个搜索结果,需要参数获取模块40获取降低搜索结果的相关度过程中所使用参数的最大值。
调整模块60,用于将排列的搜索结果中设定数量的排序靠前的搜索结果的相关度与设定的参数中的最大值相加得到调整后的相关度。
本实施例中,调整模块60将从排列的搜索结果中获取到的设定数量的排序靠前的所有搜索结果相关度都与最大参数相加得到了调整后的相关度,实现了仅对设定的调整范围内的搜索结果进行调整,在满足用户对搜索结果的需求的同时不影响搜索结果整体的排序,调整后的搜索结果相关度仍大于调整范围之外的搜索结果相关度。
下面结合一个具体的实施例来详细阐述上述搜索结果排序方法及系统的应用过程。该实施例中,用户发起搜索请求,其中搜索请求中包含了“银行”这一关键字。查询模块10根据“银行”这一关键字进行查询得到搜索结果以及搜索结果与关键字之间的相关度,查询得到的搜索结果如表1所示:
表1
从表1可以清楚的看出,与中国银行相关的搜索结果的相关度最高,与关键字最为匹配。关键字判断模块20将关键字“银行”与存储的泛关键字进行比对,判断到关键字“银行”为泛关键字,则处理模块30从表1所示的多个搜索结果中进行逐一提取,并获取相关度大于这一提取到的搜索结果的相关度的其他搜索结果,即在按照相关度从大到小进行排列的搜索结果中,对前N个搜索结果进行相关度的调整,从第二个搜索结果开始逐一提取搜索结果,结果判断模块50将提取的搜索结果与前面的每一个搜索结果进行一一比对,判断提取的搜索结果是否为前面的搜索结果的子串,若是,则将提取的搜索结果的相关度与设定的参数相减以调整提取的搜索结果的相关度。
在完成前N个搜索结果的调整后,根据搜索结果的相关度对搜索结果进行排序,此时与中国银行相关的搜索结果不再连续地集中于搜索结果的前面,得到如表2所示的搜索结果:
表2
从表2中可以获取到更为丰富的内容,例如,用户由这一搜索结果可以获知银行的类型有哪些。
上述搜索结果排序方法及系统可应用于各种各样的搜索应用中,但优选为地图搜索的应用。
上述搜索结果排序方法及系统,逐一提取搜索结果以及相关度,并从查询得到的搜索结果中获取相关度大于提取的搜索结果的相关度的搜索结果,若获取的搜索结果为提取的搜索结果的子串,则通过调整提取的搜索结果的相关度来对所有的搜索结果进行调整,将原本按照相关度的大小进行排列的搜索结果重新排列,以避免连续出现非常类似的搜索结果,从而丰富页面内容,提高了页面的信息含量,用户不需要进行多次翻页即可查看各种各样的搜索结果,提高了操作上的方便性。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。