CN104765782B - 一种索引排序更新方法及装置 - Google Patents
一种索引排序更新方法及装置 Download PDFInfo
- Publication number
- CN104765782B CN104765782B CN201510125423.0A CN201510125423A CN104765782B CN 104765782 B CN104765782 B CN 104765782B CN 201510125423 A CN201510125423 A CN 201510125423A CN 104765782 B CN104765782 B CN 104765782B
- Authority
- CN
- China
- Prior art keywords
- ranking results
- caching
- index
- segment
- publisher
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种索引排序更新方法及装置,涉及计算技术和搜索领域,用以解决现有技术中无法将信息发布者状态等实时更新的因素及时反映到搜索结果,使搜索结果不够准确的问题。所述方法包括:根据第一查询请求对数据段进行倒排索引计算得到第一排序结果,并将所述第一排序结果存入缓存;根据实时刷新的发布者状态对缓存中的所述第一排序结果进行正排索引计算以对所述第一排序结果进行实时更新。
Description
技术领域
本发明涉及计算和信息技术领域,特别是涉及一种信息展示方法及装置。
背景技术
分类信息网站的搜索结果中的信息排序受到多种因素影响,除了信息本身的相关性、更新时间等因素之外,还有信息发布者的状态、信息的所属类别和所在地域等。
然而现有技术中,当发布者状态等因素改变时,由于数据量大、实时性要求高,***很难将这些因素及时反映到搜索结果的信息排序中,从而使搜索结果不够准确。
发明内容
本发明要解决的技术问题是提供一种索引排序更新方法及装置,用以解决现有技术中无法将信息发布者状态等实时更新的因素及时反映到搜索结果,使搜索结果不够准确的问题。
一方面,本发明提供一种索引排序更新方法,包括:根据第一查询请求对数据段进行倒排索引计算得到第一排序结果,并将所述第一排序结果存入缓存;根据发布者状态对缓存中的所述第一排序结果进行正排索引计算以对所述第一排序结果进行实时更新。
可选的,所述数据段分多个分段进行管理,每个所述分段中存储预设时间范围内产生的数据,各所述分段对应的预设时间范围不同。
可选的,所述根据第一查询请求对数据段进行倒排索引计算得到第一排序结果包括:根据所述第一查询请求,对各个所述分段进行倒排索引计算得到第一排序结果。
可选的,所述根据实时刷新的发布者状态对缓存中的所述第一排序结果进行正排索引计算以对所述第一排序结果进行实时更新包括:当所述数据段的第一排序结果中存在文档被删除的情况时,将对应的文档从缓存中删除;根据实时刷新的发布者状态对缓存中的所述第一排序结果进行正排索引计算以对所述第一排序结果进行实时更新。
可选的,所述发布者状态包括发布者的用户属性或发布者的操作行为。
进一步的,在所述根据发布者状态对缓存中的所述第一排序结果进行正排索引计算以对所述第一排序结果进行实时更新后,所述方法还包括:根据第二查询请求在所述缓存中进行结果集查询;在所述缓存中存在所述结果集的情况下,从所述缓存中的数据获取所述结果集;在所述缓存中不存在所述结果集的情况下,依次进行倒排索引计算和正排索引计算以获取第二排序结果。
另一方面,本发明还提供一种索引排序更新装置,包括:倒排索引计算单元,用于根据第一查询请求对数据段进行倒排索引计算得到第一排序结果,并将所述第一排序结果存入缓存;正排索引计算单元,用于根据发布者状态对缓存中的所述第一排序结果进行正排索引计算以对所述第一排序结果进行实时更新。
可选的,所述数据段分多个分段进行管理,每个所述分段中存储预设时间范围内产生的数据,各所述分段对应的预设时间范围不同。
可选的,所述正排索引计算单元具体用于:当所述数据段的第一排序结果中存在文档被删除的情况时,将对应的文档从缓存中删除;根据实时刷新的发布者状态对缓存中的所述第一排序结果进行正排索引计算以对所述第一排序结果进行实时更新。
进一步的,所述装置还包括:查询单元,用于在根据发布者状态对缓存中的所述第一排序结果进行正排索引计算以对所述第一排序结果进行实时更新后,根据第二查询请求在所述缓存中进行结果集查询;获取单元,用于在所述缓存中存在所述结果集的情况下,从所述缓存中的数据获取所述结果集;在所述缓存中不存在所述结果集的情况下,依次触发所述倒排索引计算单元和所述正排索引计算单元,在进行倒排索引计算和正排索引计算后,获取第二排序结果。
本发明实施例提供的索引排序更新方法及装置,能够根据第一查询请求对数据段进行倒排索引计算得到第一排序结果,并将所述第一排序结果存入缓存;然后根据发布者状态对缓存中的所述第一排序结果进行正排索引计算以对所述第一排序结果进行实时更新。这样,由于缓存中的数据吞吐速度更快,而且仅需要进行简单的正排索引计算,因此能够将发布者状态的更新及时反映到排序结果中,从而大大提高了搜索结果的准确性。
附图说明
图1是本发明实施例提供的索引排序更新方法的一种流程图;
图2是本发明优选实施例中索引排序更新方法的一种操作过程示意图;
图3是本发明优选实施例中数据段的一种结构示意图;
图4是本发明实施例提供的索引排序更新装置的一种结构示意图。
具体实施方式
以下结合附图对本发明进行详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
如图1所示,本发明的实施例提供一种索引排序更新方法,包括:
S11,根据第一查询请求对数据段进行倒排索引计算得到第一排序结果,并将所述第一排序结果存入缓存;
S12,根据实时刷新的发布者状态对缓存中的所述第一排序结果进行正排索引计算以对所述第一排序结果进行实时更新。
本发明实施例提供的索引排序更新方法,能够根据第一查询请求对数据段进行倒排索引计算得到第一排序结果,并将所述第一排序结果存入缓存;然后根据实时刷新的发布者状态对缓存中的所述第一排序结果进行正排索引计算以对所述第一排序结果进行实时更新。这样,由于缓存中的数据吞吐速度更快,而且仅需要进行简单的正排索引计算,因此能够将发布者状态的更新及时反映到排序结果中,从而大大提高了搜索结果的准确性。
其中,可选的,所述发布者状态可包括发布者的用户属性或发布者的操作行为等可以实时变化的特征。
对索引的操作变化可以包括查询和更新。为支持多线程并发查询以及实时索引,可对索引数据分多段进行管理。
对于索引查询功能,可以根据用户的查询请求,对索引数据段中的文档进行实时排序,并将排序后的文档存入缓存。对于文档更新功能,索引数据段可以自行对其中的文档实施文档更新和批量异构文档刷新等操作。
具体而言,数据段是对海量索引数据的一种管理方式。为支持多线程并发查询和实时索引,数据段分多个分段进行管理,每个所述分段中只存储预设时间范围内产生的数据,各所述分段对应的预设时间范围不同。一般的,这些数据段可分为reader segment及writer segment。其中,reader segment可以供用户查询和进行数据的删、改;writersegment只提供数据的增、删、改功能,不提供查询功能。当一批索引数据产生后,可以生成文档添加请求,将新增文档加入writer segment中。当writer segment生命周期到达上限之后(例如3秒),又将writer segment转换为reader segment,变为可供查询的readersegment,同时创建新的writer segment。各个reader segment之间可以进行调度和动态融合。
具体的,在本发明的一个实施例中,可以定时扫描reader segment,当一个readersegment的生命周期到达上限之后,就将这个reader segment与比它生命周期更大的一个相邻的reader segment进行合并。
优选的,如图2所示,其中,w表示writer segment,r和R表示reader segment,由图2可以看出,与writer segment相邻的reader segment容量最小生命周期最短,离writersegment越远,reader segment的容量越大生命周期越大。
优选的,较大的Reader segment可以由线下的全量索引,较小的数据段可以线上实时索引段;每个段都有其生命周期,当到达其生命周期后会有进行生命周期的提升或向生命周期更大的段合并。
由于数据段是由多个分段进行管理的,可选的,根据第一查询请求对数据段进行倒排索引计算得到第一排序结果具体可包括:根据所述第一查询请求,对各个所述分段同时进行倒排索引计算得到第一排序结果,从而有效加快了搜索速度。
具体而言,文档更新可以由文档异构刷新请求来启动。可选的,文档异构刷新请求可包含两项:查询条件和更新条件,例如,在本发明的一个实施例中,查询条件和更新条件为:
query=day:Friday AND gender:male&&&update=valid_days:100,price:19.22
当updater接收到异构刷新的请求时,可以进行如下操作:
1)根据请求中的查询条件,对每一个reader segment数据段执行倒排查询,得到所有符合条件的文档集;
2)遍历文档集,根据请求中的每一对域名与域值,对每个文档中的对应正排域进行刷新。
由于updater串行执行每个文档更新请求,所以在此过程中文档集不会变化,从而保证了批量刷新的完整性。
由于用户对数据的操作可以直接反映到数据段中,但却不一定能反映到缓存中,为了使缓存中的数据也能够及时更新,优选的,在步骤S12中,根据实时刷新的发布者状态对缓存中的所述第一排序结果进行正排索引计算以对所述第一排序结果进行实时更新可具体包括:
当所述数据段的第一排序结果中存在文档被删除的情况时,将对应的文档从缓存中删除;
根据实时刷新的发布者状态对缓存中的所述第一排序结果进行正排索引计算以对所述第一排序结果进行实时更新。
由于在步骤S12之后,缓存中已经存在了一些排序结果,因此,当进行下一次查询或搜索时,可以根据第二查询请求在所述缓存中进行结果集查询;在所述缓存中存在所述结果集的情况下,从所述缓存中的数据获取所述结果集;在所述缓存中不存在所述结果集的情况下,依次进行倒排索引计算和正排索引计算以获取第二排序结果。
也就是说,针对一个query,如果cache中没有结果集,那么首先进行倒排索引查询等计算,并根据一个主要排序维度(例如时间)进行排序,得到一个首次排序后的查询结果集,存在cache里,这一步为粗排。这个结果集要保证有足够的冗余度。例如,即使查询请求仅取第一页的信息,在第一次粗排时也要保存前几页的信息结果集,以便当用户向后翻页时,cache结果也能复用,另一方面,当cache中的文档被实时删除或降权时,cache里冗余文档也能够补充上来。具体的冗余页数可根据用户通常的翻页数而定,用户通常不会浏览页数过于靠后的信息。
从cache中取得粗排的结果集之后,使用较复杂的打分方式对结果集中的文档进行重新排序。这种打分方式会利用文档的发布者分数这样的正排域作为打分因素,因此当分数更新时,排序结果也会更新,这一步为精排。
需要说明的是,如果cache中存在符合的结果集,则从该结果集中过滤掉被实时删除的文档(当某个段中的文档被删除时,可能是因为业务需要,也可能是因为整篇文档的刷新,也就是把这篇文档从该段中删除,并把这篇文档的新数据增加到新段里,这时候取cache的话,cache里的数据可能还保留着这篇文档,那么cache就跟段的状态不一致了,所以需要将被删掉的文档过滤掉),并根据query所指定的文档数量,截取所需的结果集。
本发明的实施例中,除了在数据段中可以进行倒排索引这一较为粗略的排序外,还可以在cache层进行较为精确的正排索引。Cache层避免了频繁的倒排索引查询等运算,保证了查询性能。精排对cache结果使用了实时刷新的发布者分数等正排域作为打分因素来重新排序,保证了排序结果能够实时更新。而且,由于精排仅针对cache中的结果集进行排序,不需要再进行倒排索引查询,所以不用耗费态度资源。
相应的,如图3所示,本发明的实施例还提供一种索引排序更新装置,包括:
倒排索引计算单元41,用于根据第一查询请求对数据段进行倒排索引计算得到第一排序结果,并将所述第一排序结果存入缓存;
正排索引计算单元42,用于根据实时刷新的发布者状态对缓存中的所述第一排序结果进行正排索引计算以对所述第一排序结果进行实时更新。
本发明实施例提供的索引排序更新装置,倒排索引计算单元41能够根据第一查询请求对数据段进行倒排索引计算得到第一排序结果,并将所述第一排序结果存入缓存;然后正排索引计算单元42根据实时刷新的发布者状态对缓存中的所述第一排序结果进行正排索引计算以对所述第一排序结果进行实时更新。这样,由于缓存中的数据吞吐速度更快,而且仅需要进行简单的正排索引计算,因此能够将发布者状态的更新及时反映到排序结果中,从而大大提高了搜索结果的准确性。
可选的,所述数据段分多个分段进行管理,每个所述分段中只存储预设时间范围内产生的数据,各所述分段对应的预设时间范围不同。
可选的,所述正排索引计算单元具体用于:当所述数据段的第一排序结果中存在文档被删除的情况时,将对应的文档从缓存中删除;根据实时刷新的发布者状态对缓存中的所述第一排序结果进行正排索引计算以对所述第一排序结果进行实时更新。
在另一实施例中,如图4所示,本发明提供的索引排序更新装置还可包括:
查询单元43,用于在根据发布者状态对缓存中的所述第一排序结果进行正排索引计算以对所述第一排序结果进行实时更新后,根据第二查询请求在所述缓存中进行结果集查询;
获取单元44,用于在所述缓存中存在所述结果集的情况下,从所述缓存中的数据获取所述结果集;在所述缓存中不存在所述结果集的情况下,依次触发倒排索引计算单元41和正排索引计算单元42,在进行倒排索引计算和正排索引计算后,获取第二排序结果。
尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。
Claims (8)
1.一种索引排序更新方法,其特征在于,包括:
根据第一查询请求对数据段进行倒排索引计算得到第一排序结果,并将所述第一排序结果存入缓存;
根据发布者状态对缓存中的所述第一排序结果进行正排索引计算以对所述第一排序结果进行实时更新;
其中,所述数据段分多个分段进行管理,每个所述分段中存储预设时间范围内产生的数据,各所述分段对应的预设时间范围不同,多个所述分段包括:writer segment和多个reader segment,所述reader segment对应的所述预设时间范围随着所述reader segment与所述writer segment距离的增大而增大。
2.根据权利要求1所述的方法,其特征在于,所述根据第一查询请求对数据段进行倒排索引计算得到第一排序结果包括:
根据所述第一查询请求,对各个所述分段进行倒排索引计算得到第一排序结果。
3.根据权利要求1所述的方法,其特征在于,所述根据实时刷新的发布者状态对缓存中的所述第一排序结果进行正排索引计算以对所述第一排序结果进行实时更新包括:
当所述数据段的第一排序结果中存在文档被删除的情况时,将对应的文档从缓存中删除;
根据实时刷新的发布者状态对缓存中的所述第一排序结果进行正排索引计算以对所述第一排序结果进行实时更新。
4.根据权利要求1所述的方法,其特征在于,所述发布者状态包括发布者的用户属性或发布者的操作行为。
5.根据权利要求1至4中任一项所述的方法,其特征在于,在所述根据发布者状态对缓存中的所述第一排序结果进行正排索引计算以对所述第一排序结果进行实时更新后,所述方法还包括:
根据第二查询请求在所述缓存中进行结果集查询;
在所述缓存中存在所述结果集的情况下,从所述缓存中的数据获取所述结果集;
在所述缓存中不存在所述结果集的情况下,依次进行倒排索引计算和正排索引计算以获取第二排序结果。
6.一种索引排序更新装置,其特征在于,包括:
倒排索引计算单元,用于根据第一查询请求对数据段进行倒排索引计算得到第一排序结果,并将所述第一排序结果存入缓存;
正排索引计算单元,用于根据发布者状态对缓存中的所述第一排序结果进行正排索引计算以对所述第一排序结果进行实时更新;
其中,所述数据段分多个分段进行管理,每个所述分段中存储预设时间范围内产生的数据,各所述分段对应的预设时间范围不同,多个所述分段包括:writer segment和多个reader segment,所述reader segment对应的所述预设时间范围随着所述reader segment与所述writer segment距离的增大而增大。
7.根据权利要求6所述的装置,其特征在于,所述正排索引计算单元具体用于:
当所述数据段的第一排序结果中存在文档被删除的情况时,将对应的文档从缓存中删除;
根据实时刷新的发布者状态对缓存中的所述第一排序结果进行正排索引计算以对所述第一排序结果进行实时更新。
8.根据权利要求6至7中任一项所述的装置,其特征在于,还包括:
查询单元,用于在根据发布者状态对缓存中的所述第一排序结果进行正排索引计算以对所述第一排序结果进行实时更新后,根据第二查询请求在所述缓存中进行结果集查询;
获取单元,用于在所述缓存中存在所述结果集的情况下,从所述缓存中的数据获取所述结果集;在所述缓存中不存在所述结果集的情况下,依次触发所述倒排索引计算单元和所述正排索引计算单元,在进行倒排索引计算和正排索引计算后,获取第二排序结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510125423.0A CN104765782B (zh) | 2015-03-20 | 2015-03-20 | 一种索引排序更新方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510125423.0A CN104765782B (zh) | 2015-03-20 | 2015-03-20 | 一种索引排序更新方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104765782A CN104765782A (zh) | 2015-07-08 |
CN104765782B true CN104765782B (zh) | 2019-06-21 |
Family
ID=53647613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510125423.0A Active CN104765782B (zh) | 2015-03-20 | 2015-03-20 | 一种索引排序更新方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104765782B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677813A (zh) * | 2015-12-30 | 2016-06-15 | 五八有限公司 | 一种信息展示方法及装置 |
CN106294691B (zh) * | 2016-08-04 | 2020-03-03 | 广州交易猫信息技术有限公司 | 榜单刷新方法、装置及服务端 |
CN110750535B (zh) * | 2019-09-27 | 2024-02-02 | 上海麦克风文化传媒有限公司 | 一种排序结果更新方法 |
CN111787351B (zh) * | 2020-07-01 | 2022-09-06 | 百度在线网络技术(北京)有限公司 | 信息查询方法、装置、设备和计算机存储介质 |
CN116303140B (zh) * | 2023-05-19 | 2023-08-29 | 珠海妙存科技有限公司 | 一种基于硬件的排序算法优化方法及其装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102867070A (zh) * | 2012-09-29 | 2013-01-09 | 瑞庭网络技术(上海)有限公司 | 更新key-value分布式存储***缓存的方法 |
CN103177117A (zh) * | 2013-04-08 | 2013-06-26 | 北京奇虎科技有限公司 | 信息索引***及信息索引的更新方法 |
CN103218423A (zh) * | 2013-04-02 | 2013-07-24 | 中国科学院信息工程研究所 | 数据查询方法及装置 |
CN103970853A (zh) * | 2014-05-05 | 2014-08-06 | 浙江宇视科技有限公司 | 优化搜索引擎的方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100573520C (zh) * | 2006-08-29 | 2009-12-23 | 国际商业机器公司 | 为检索对多个文档进行预处理的方法和装置 |
US9424351B2 (en) * | 2010-11-22 | 2016-08-23 | Microsoft Technology Licensing, Llc | Hybrid-distribution model for search engine indexes |
-
2015
- 2015-03-20 CN CN201510125423.0A patent/CN104765782B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102867070A (zh) * | 2012-09-29 | 2013-01-09 | 瑞庭网络技术(上海)有限公司 | 更新key-value分布式存储***缓存的方法 |
CN103218423A (zh) * | 2013-04-02 | 2013-07-24 | 中国科学院信息工程研究所 | 数据查询方法及装置 |
CN103177117A (zh) * | 2013-04-08 | 2013-06-26 | 北京奇虎科技有限公司 | 信息索引***及信息索引的更新方法 |
CN103970853A (zh) * | 2014-05-05 | 2014-08-06 | 浙江宇视科技有限公司 | 优化搜索引擎的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104765782A (zh) | 2015-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104765782B (zh) | 一种索引排序更新方法及装置 | |
CN104850572B (zh) | HBase非主键索引构建与查询方法及其*** | |
CN107103032B (zh) | 一种分布式环境下避免全局排序的海量数据分页查询方法 | |
CN100458779C (zh) | 扩展索引的方法 | |
CN102890722B (zh) | 应用于时序历史数据库的索引方法 | |
US9760636B1 (en) | Systems and methods for browsing historical content | |
CN112437916A (zh) | 数据库表的增量群集 | |
CN105630864A (zh) | 存储行标识符值的字典的强制排序 | |
US10565198B2 (en) | Bit vector search index using shards | |
CN104268295B (zh) | 一种数据查询方法及装置 | |
Bender et al. | Exponential structures for efficient cache-oblivious algorithms | |
US8694508B2 (en) | Columnwise storage of point data | |
JP2017194778A (ja) | リレーショナルデータベースのチューニング装置及び方法 | |
CN106055621A (zh) | 一种日志检索方法及装置 | |
CN103488684A (zh) | 基于缓存数据多线程处理的电力可靠性指标快速计算方法 | |
CN106682042B (zh) | 一种关系数据缓存及查询方法及装置 | |
TWI539306B (zh) | Information delivery method, processing server and merge server | |
Huang et al. | Mining frequent and top-k high utility time interval-based events with duration patterns | |
CN110162522A (zh) | 一种分布式数据搜索***及方法 | |
CN105653611A (zh) | 分表分页排序查询方法及装置 | |
CN103365842B (zh) | 一种页面浏览推荐方法及装置 | |
CN104834719B (zh) | 应用于实时大数据场景下的数据库*** | |
Leong Hou et al. | Durable top-k search in document archives | |
CN106372127B (zh) | 基于Spark的大规模图数据的多样性图排序方法 | |
CN104536992B (zh) | 关键词的拓展方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |