具体实施方式
为了能够检索到检索分词在设定位置出现的文档,本发明实施例提供一种文档检索方法,本方法中,在接收到检索请求后,需要确定检索请求中的检索关键词所包含的一个或多个检索分词(即特定检索分词)在目标文档中所处的位置需要满足的条件,然后查找包含确定的全部检索分词并且特定检索分词所在的位置满足该条件的文档,最后将查找到的文档的信息作为检索结果返回。
参见图1,本发明实施例提供的文档检索方法,具体包括以下步骤:
步骤10:接收包含检索关键词的检索请求;
这里,检索关键词是指外界(例如用户)输入的用于检索的关键词;
步骤11:确定所述检索关键词所包含的检索分词以及该检索分词中的特定检索分词在目标文档中所处的位置需要满足的条件;
步骤12:查找包含确定的全部检索分词并且特定检索分词所在的位置满足所述条件的文档;
步骤13:将查找到的文档的信息作为检索结果返回。
步骤11中,在所述特定检索分词包括检索关键词所包含的第一个检索分词时,确定该第一个检索分词在目标文档中所处的位置需要满足的条件,其具体实现可以如下:
根据检索关键词的格式,确定检索关键词所包含的第一个检索分词在目标文档中的位置与目标文档的起始位置所需要满足的第一位置关系,将该第一位置关系作为检索关键词所包含的第一个检索分词在目标文档中所处的位置需要满足的条件。
具体的,上述确定第一位置关系的具体实现可以如下:
首先,确定在检索关键词中第一个检索分词之前是否具有通配符;在确定为是时,根据预先设定的通配符类型与距离值范围的对应关系,确定第一个检索分词之前的通配符对应的位置距离值,并确定所述第一位置关系为:在目标文档中所述第一个检索分词与目标文档的起始字符之间的距离值在所述距离值范围内;在确定为否时,确定所述第一位置关系为:第一个检索分词位于目标文档的起始位置。
当然,上述根据检索关键词的格式确定第一位置关系的实现并不局限于上述通配符的方式,任何其他根据检索关键词的格式确定第一位置关系的方式均在本发明的保护范围内。
步骤11中,在所述特定检索分词包括检索关键词所包含的最后一个检索分词时,确定该最后一个检索分词在目标文档中所处的位置需要满足的条件,其具体实现可以如下:
根据检索关键词的格式,确定检索关键词所包含的最后一个检索分词在目标文档中的位置与目标文档的结束位置所需要满足的第二位置关系,将该第二位置关系作为检索关键词所包含的最后一个检索分词在目标文档中所处的位置需要满足的条件。
具体的,上述确定第二位置关系的具体实现可以如下:
确定在检索关键词中最后一个检索分词之后是否具有通配符;在确定为是时,根据预先设定的通配符类型与位置距离值的对应关系,确定最后一个检索分词之后的通配符对应的距离值范围,并确定所述第二位置关系为:在目标文档中所述最后一个检索分词与目标文档的结尾字符之间的距离值在所述距离值范围内;在确定为否时,确定所述第二位置关系为:最后一个检索分词位于目标文档的结束位置。
当然,上述根据检索关键词的格式确定第二位置关系的实现并不局限于上述通配符的方式,任何其他根据检索关键词的格式确定第二位置关系的方式均在本发明的保护范围内。
举例说明,在所述通配符为星号时,所述距离值范围为不小于0的整数;在所述通配符为问号时,所述问号对应的距离值范围为0或1。
在步骤10中接收包含检索关键词的检索请求之前,可以针对一个或多个文档建立索引文件,该索引文件中包含各文档所包含的检索分词以及该检索分词在对应文档中的位置信息;
相应的,步骤12的具体实现可以分为如下三种情况:
第一种,对应于特定检索分词包括检索关键词中的第一个检索分词的情况,具体如下:
首先,根据所述索引文件确定包含检索关键词中的全部检索分词的文档;然后,从所述索引文件中读取检索关键词中的第一个检索分词在该文档中的位置信息,根据该位置信息确定该第一个检索分词在该文档中的位置与该文档的起始位置是否满足所述第一位置关系;若是,则将该文档确定为查找到的包含确定的全部检索分词并且特定检索分词所在的位置满足所述条件的文档,否则,不将该文档确定为查找到的包含确定的全部检索分词并且特定检索分词所在的位置满足所述条件的文档。
第二种,对应于特定检索分词包括检索关键词中的最后一个检索分词的情况,具体如下:
首先,根据所述索引文件确定包含检索关键词中的全部检索分词的文档;然后,从所述索引文件中读取所述检索关键词中的最后一个检索分词在该文档中的位置信息,根据该位置信息确定该最后一个检索分词在该文档中的位女与该文档的起始位置是否满足所述第二位置关系;若是,则将该文档确定为查找到的包含确定的全部检索分词并且特定检索分词所在的位置满足所述条件的文档,否则,不将该文档确定为查找到的包含确定的全部检索分词并且特定检索分词所在的位置满足所述条件的文档。
第三种,对应于特定检索分词包括检索关键词中的第一个和最后一个检索分词的情况,具体如下:
首先,根据所述索引文件确定包含检索关键词中的全部检索分词的文档;然后,从所述索引文件中读取检索关键词中的第一个检索分词和最后一个检索分词在该文档中的位置信息,根据读取到的位置信息确定该第一个检索分词在该文档中的位置与该文档的起始位置是否满足所述第一位置关系,以及该最后一个检索分词在该文档中的位置与该文档的结束位置是否满足所述第二位置关系;若是,则将该文档确定为查找到的包含确定的全部检索分词并且特定检索分词所在的位置满足所述条件的文档,否则,不将该文档确定为查找到的包含确定的全部检索分词并且特定检索分词所在的位置满足所述条件的文档。
当然,特定检索分词除了可以包括检索关键词中的第一个和最后一个检索分词外,也可以包括检索关键词中的任何其他检索分词,在这种情况下,步骤11中确定该特定检索分词在目标文档中所处的位置需要满足的条件的具体实现可以如下:根据检索关键词的格式,确定该特定检索分词在目标文档中的位置与目标文档的起始位置和/或结束位置所需要满足的位置关系,将该位置关系作为该特定检索分词在目标文档中所处的位置需要满足的条件。相应的,步骤12的具体实现可以如下:首先,根据索引文件确定包含检索关键词中的全部检索分词的文档;然后,从索引文件中读取该特定检索分词在该文档中的位置信息,根据该位置信息确定该特定检索分词在该文档中的位置与该文档的起始位置和/或结束位置是否满足相应的位置关系;若是,则将该文档确定为查找到的包含确定的全部检索分词并且特定检索分词所在的位置满足所述条件的文档,否则,不将该文档确定为查找到的包含确定的全部检索分词并且特定检索分词所在的位置满足所述条件的文档。
较佳的,在步骤12与步骤13之间,该方法进一步包括:
确定所述检索关键词所包含的各检索分词在查找到的文档中的位置关系与在所述检索关键词中的位置关系是否一致;
相应的,步骤13中,在确定所述检索关键词所包含的各检索分词在查找到的文档中的位置关系与在所述检索关键词中的位置关系一致时,将查找到的文档的信息作为检索结果返回。
较佳的,在步骤12与步骤13之间,可以根据检索关键词所包含的检索分词在查找到的各文档中的位置和查找到的各文档的数据长度,对查找到的各文档进行排序;相应的,步骤13中,按照对查找到的各文档进行排序的排序结果,将查找到的各文档作为检索结果返回。
上述根据所述检索关键词所包含的检索分词在查找到的各文档中的位置和查找到的各文档的数据长度,对查找到的各文档进行排序,其具体实现可以如下:
首先,根据预先设定的文档相关度值计算公式,分别计算查找到的各文档的相关度值;所述文档相关度值计算公式满足以下条件:所述检索关键词所包含的检索分词在文档中的位置越靠前,根据该文档相关度值计算公式计算得到的相关度值越大,文档的数据长度越小,根据该文档相关度值计算公式计算得到的相关度值越大;
然后,按照计算得到的各文档的相关度值的大小顺序,将各文档进行排序。
所述文档相关度值计算公式可以包括:
公式一:
公式二:
其中,scord(d)为文档d的文档相关度值;len为文档的数据长度,pos(t)为所述检索关键词所包含的第t个检索分词在文档中的位置值,N为所述检索关键词所包含的检索分词的个数。
当然,文档相关度值计算公式并不局限于上述公式一和公式二,任何具有如下特性的公式均在本发明的保护范围内:检索关键词所包含的检索分词在文档中的位置越靠前,计算结果值越大,文档的数据长度越小,计算结果值越大。
为了能够根据检索分词出现在文档中的位置以及文档的数据长度对检索结果进行排序,本发明实施例提供一种文档检索方法,本方法中,在检索到包含检索关键词中的全部检索分词的多个文档后,根据检索关键词中的检索分词在检索到的多个文档中的位置和检索到的多个文档的数据长度,对检索到的多个文档进行排序;最后按照排序结果将检索到的多个文档作为检索结果返回。
参见图2,本发明实施例提供的文档检索方法,具体包括以下步骤:
步骤20:检索包含检索关键词中的全部检索分词的多个文档;
这里,可以是按照上述步骤10-12检索到包含检索关键词中的全部检索分词的多个文档,也可以是按照现有技术检索到包含检索关键词中的全部检索分词的多个文档,现有技术为:接收到检索请求后,分析确定检索请求中的检索关键词包含的检索分词,在索引文件中查找包含所有检索分词的文档,并将该文档作为检索结果。
步骤21:根据所述检索关键词中的检索分词在检索到的多个文档中的位置和检索到的多个文档的数据长度,对检索到的多个文档进行排序;
步骤22:按照对检索到的多个文档进行排序的排序结果,将检索到的多个文档作为检索结果返回。
步骤21的具体实现方式可以如下:
根据预先设定的文档相关度值计算公式,分别计算检索到的多个文档的相关度值;所述文档相关度值计算公式满足以下条件:所述检索关键词所包含的检索分词在文档中的位置越靠前,根据该文档相关度值计算公式计算得到的相关度值越大,文档的数据长度越小,根据该文档相关度值计算公式计算得到的相关度值越大;
按照计算得到的多个文档的相关度值的大小顺序,将该多个文档进行排序。
上述文档相关度值计算公式可以采用上述公式一和公式二。当然,文档相关度值计算公式并不局限于上述公式一和公式二,任何具有如下特性的公式均在本发明的保护范围内:检索关键词所包含的检索分词在文档中的位置越靠前,计算结果值越大,文档的数据长度越小,计算结果值越大。
实际应用中,在文档相关度值相同的情况下,可进一步按预先定义的规则,如按拼音、内码等规则,将文档相关度值相同的文档进行排序。
下面结合实施例对本发明进行具体说明:
实施例一:
本实施例为索引建立过程,具体如下:
步骤01:对文档中有精确检索需求的字段按字分词,得到一个或多个检索分词,为每个检索分词创建索引;
步骤02:在索引中增加额外标记(Term),以标记字段的结尾。Term的文本采用一个预定义字符END。END是一个在字符编码集合中的非法字符,以确保不会跟正常的文本产生重复;
步骤03:记录并保存每个文档的该字段的长度,即该字段包含的检索分词个数,大于255的长度值作为255进行处理,以方便存储和计算。
实施例二:
本实施例为文档检索过程,具体如下:
步骤11:将检索请求中的检索关键词按字分词,得到N个检索分词。如果涉及与字段结尾的位置关系,额外添加END作为第N+1个检索分词;
步骤12:解析检索关键词及其中的通配符,得到并记录各检索分词之间的位置关系,包括:
第一个检索分词与文档开头的位置关系,第二个检索分词与第一个检索分词之间的位置关系,……,第N个检索分词与文档结尾之间的位置关系;
位置关系可以用一组最小位置值和最大位置值来表示,记做(min,max)。min的最小值为0,即位置相同,max的最大值为MAX,这里可以定为255。
步骤13:从创建的索引中查找符合条件的文档;
具体到,找到同时包含上述N+1个检索分词的文档,进而从索引文件中读取N个检索分词在该文档中的位置值,进行位置关系的具体匹配,要求这N+1个检索分词在文档中的相对位置符合上述的距离要求。
步骤14:根据相关度值计算公式计算查找到的文档的相关度值,依据相关度值对查找到的文档进行降序排列。相关度值计算公式采用上述公式一和公式二。
实施例三:
本实施例通过企业检索应用中,对《辞海》的条目字段进行检索的实现来说明具体实施方式。
对《辞海》条目字段进行的检索要求能够找到在特定位置包含检索分词的文档,并根据命中位置及命中文档长度,使用上述规则排序。
检索请求中支持通配符“?”和“*”,其中“?”代表0个或1个字符,而“*”代表0个或1个或多个字符,支持在一个检索关键词中同时存在多个通配符。
以下是对各种类型的通配符使用的详细解释:
在检索过程中,既要匹配检索分词之间的位置关系,也要匹配检索分词与文档开头及结尾之间的位置关系。
在检索之前需要进行索引建立过程,具体如下:对条目字段按字分词,创建倒排索引。在索引中增加额外标记(Term),以标记字段的结尾。Term的文本采用一个预定义字符END。END是一个在字符编码集合中的非法字符,以确保不会跟正常的文本产生重复;记录并保存每个文档的该字段的长度,即该字段包含的检索分词个数,大于255的长度值作为255进行处理,使用一个字节(byte)来保存字段长度。
下面以检索“?AB*C”为例,描述检索过程:
步骤21:与索引建立过程对应,将检索请求中的检索关键词按字分词,得到“A”、“B”、“C”三个检索分词,根据需要增加结尾项END作为第四个检索分词。
步骤22:计算检索分词彼此之间的位置关系,以及检索分词与文档开头、文档结尾之间的位置关系。
位置关系用一对最小距离值min和最大距离值max来表示,记做(min,max),min最小值为0,即位置相同;max的最大值为MAX。检索请求中的通配符“?”代表0个或1个字符,“*”代表0个或1个或多个字符。
解析检索请求后,得到如下距离关系:
Dis(BEGIN,A)=(0,1)
Dis(A,B)=(1,1)
Dis(B,C)=(1,MAX)
Dis(C,FINALITY)=(1,1)
BEGIN表示文档的开头,FINALITY表示文档的结尾。Dis(X,Y)表示X、Y两者之间的距离关系,用最小距离和最大距离来表示。MAX是预先定义的最大距离值,这里定为255。
步骤23:从倒排索引中查找文档;
首先查找同时包含“A”、“B”、“C”三个检索分词的文档,进而读取这些检索分词及END在该文档中的位置值,进行位置关系的具体匹配。
要求三个检索分词在文档中的相对位置符合上述的距离要求。“A”的位置值必须为0或1,从而满足与文档开头的位置关系,“A”、“B”、“C”、“END”相互之间的位置关系也满足上述的距离要求。
步骤24:按照相关度值计算公式计算检索到的符合条件的各文档的相关度值,对检索到的文档按照相关度值由高至低的顺序排序,并返回排序后的结果。
这里根据“A”、“B”、“C”的位置值和文档字段的长度,进行相关度值的计算。
本发明还可以应用在数据库系统中,将数据库中的一条记录作为一个文档,在接收到包含检索关键词的检索请求后,查找记录字段包含检索关键词中的检索分词并且特定检索分词所在的位置满足一定条件的记录。
参见图3,本发明实施例提供一种文档检索装置,该装置包括:
请求接收单元30,用于接收包含检索关键词的检索请求;
条件分析单元31,用于确定所述检索关键词所包含的检索分词以及该检索分词中的特定检索分词在目标文档中所处的位置需要满足的条件;
文档查找单元32,用于查找包含确定的全部检索分词并且特定检索分词所在的位置满足所述条件的文档;
结果返回单元33,用于将查找到的文档的信息作为检索结果返回。
进一步,所述条件分析单元31具体可用于:
在所述特定检索分词包括所述检索关键词所包含的第一个检索分词时,根据所述检索关键词的格式,确定所述检索关键词所包含的第一个检索分词在目标文档中的位置与目标文档的起始位置所需要满足的第一位置关系,将该第一位置关系作为所述第一个检索分词在目标文档中所处的位置需要满足的条件;
相应的,所述文档查找单元32具体可用于:
查找包含确定的检索分词并且所述第一个检索分词满足所述第一位置关系的文档。
进一步,所述条件分析单元31具体可用于:
在所述特定检索分词包括所述检索关键词所包含的最后一个检索分词时,根据所述检索关键词的格式,确定所述检索关键词所包含的最后一个检索分词在目标文档中的位置与目标文档的结束位置所需要满足的第二位置关系,将该第二位置关系作为所述最后一个检索分词在目标文档中所处的位置需要满足的条件;
相应的,所述文档查找单元32具体可用于:
查找包含确定的检索分词并且所述最后一个检索分词满足所述第二位置关系的文档。
进一步,所述条件分析单元31具体可用于:
根据所述检索关键词的格式,确定所述检索关键词所包含的第一个检索分词在目标文档中的位置与目标文档的起始位置所需要满足的第一位置关系,以及所述检索关键词所包含的最后一个检索分词在目标文档中的位置与目标文档的结束位置所需要满足的第二位置关系;
相应的,所述文档查找单元32具体可用于:
查找包含确定的检索分词并且所述第一个检索分词满足所述第一位置关系、以及所述最后一个检索分词满足所述第二位置关系的文档。
进一步,所述条件分析单元31具体可用于:
确定在所述检索关键词中第一个检索分词之前是否具有通配符;
在确定为是时,根据预先设定的通配符类型与距离值范围的对应关系,确定所述通配符对应的位置距离值,并确定所述第一位置关系为:在目标文档中所述第一个检索分词与目标文档的起始字符之间的距离值在所述距离值范围内;
在确定为否时,确定所述第一个检索分词在目标文档中的位置与目标文档的起始位置所需要满足的第一位置关系为:第一个检索分词位于目标文档的起始位置。
进一步,所述条件分析单元31具体可用于:
确定在所述检索关键词中最后一个检索分词之后是否具有通配符;
在确定为是时,根据预先设定的通配符类型与位置距离值的对应关系,确定所述通配符对应的距离值范围,并确定所述第二位置关系为:在目标文档中所述最后一个检索分词与目标文档的结尾字符之间的距离值在所述距离值范围内;
在确定为否时,确定所述最后一个检索分词在目标文档中的位置与目标文档的结束位置所需要满足的第二位置关系为:最后一个检索分词位于目标文档的结束位置。
在所述通配符为星号时,所述距离值范围为不小于0的整数;在所述通配符为问号时,所述问号对应的距离值范围为0或1。
进一步,所述文档查找单元32还可用于:
确定所述检索关键词所包含的各检索分词在查找到的文档中的位置关系与在所述检索关键词中的位置关系是否一致;
进一步,所述结果返回单元33具体可用于:
在确定所述检索关键词所包含的各检索分词在查找到的文档中的位置关系与在所述检索关键词中的位置关系一致时,将查找到的文档的信息作为检索结果返回。
进一步,该装置还包括:
结果排序单元34,用于根据所述检索关键词所包含的检索分词在查找到的各文档中的位置和查找到的各文档的数据长度,对查找到的各文档进行排序;
相应的,所述结果返回单元33具体可用于:
按照对查找到的各文档进行排序的排序结果,将查找到的各文档作为检索结果返回。
进一步,所述结果排序单元34具体可用于:
根据预先设定的文档相关度值计算公式,分别计算查找到的各文档的相关度值;所述文档相关度值计算公式满足以下条件:所述检索关键词所包含的检索分词在文档中的位置越靠前,根据该文档相关度值计算公式计算得到的相关度值越大,文档的数据长度越小,根据该文档相关度值计算公式计算得到的相关度值越大;
按照计算得到的各文档的相关度值的大小顺序,将各文档进行排序。
所述文档相关度值计算公式可以为:
其中,scord(d)为文档d的文档相关度值;len为文档的数据长度,pos(t)为所述检索关键词所包含的第t个检索分词在文档中的位置值,N为所述检索关键词所包含的检索分词的个数。
参见图4,本发明实施例还提供一种文档检索装置,该装置包括:
文档检索单元40,用于检索包含检索关键词中的全部检索分词的多个文档;
结果排序单元41,用于根据所述检索关键词中的检索分词在检索到的多个文档中的位置和检索到的多个文档的数据长度,对检索到的多个文档进行排序;
结果返回单元42,用于按照对检索到的多个文档进行排序的排序结果,将检索到的多个文档作为检索结果返回。
进一步,所述结果排序单元41具体可用于:
根据预先设定的文档相关度值计算公式,分别计算检索到的多个文档的相关度值;所述文档相关度值计算公式满足以下条件:所述检索关键词所包含的检索分词在文档中的位置越靠前,根据该文档相关度值计算公式计算得到的相关度值越大,文档的数据长度越小,根据该文档相关度值计算公式计算得到的相关度值越大;
按照计算得到的多个文档的相关度值的大小顺序,将该多个文档进行排序。
所述文档相关度值计算公式可以为:
其中,scord(d)为文档d的文档相关度值;len为文档的数据长度,pos(t)为所述检索关键词所包含的第t个检索分词在文档中的位置值,N为所述检索关键词所包含的检索分词的个数。
综上,本发明的有益效果包括:
本发明实施例提供的方案中,接收到包含检索关键词的检索请求后,确定所述检索关键词所包含的检索分词以及该检索分词中的特定检索分词在目标文档中所处的位置需要满足的条件,查找包含确定的全部检索分词并且特定检索分词所在的位置满足所述条件的文档,并将查找到的文档的信息作为检索结果返回。可见,采用本发明能够检索到检索分词的位置满足一定条件的文档,也即能够检索到检索分词在一定位置出现的文档,进而使得检索结果更加精确,更好的满足用户需求。
本发明实施例提供的方案中,在检索到包含检索关键词中的全部检索分词的多个文档后,根据所述检索关键词中的检索分词在检索到的多个文档中的位置和检索到的多个文档的数据长度,对检索到的多个文档进行排序,并按照对检索到的多个文档进行排序的排序结果,将检索到的多个文档作为检索结果返回。可见,采用本发明,能够根据检索分词出现在文档中的位置以及文档的数据长度对检索结果进行排序,进而使得检索文档的排序结果更加精确,更好的满足用户需求。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。