`
Tonyguxu
  • 浏览: 278555 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【工作】日志检索结果的排序改进分析

 
阅读更多

 

 

下图是现在生产环境的部署图,索引文件分布在70-73服务器上,这4台服务器在一个集群里,每个节点的

search service会查询该节点上的索引文件(阶段1),然后在71或者72服务器的query client service里获得汇合后的数据(阶段2)。

 

阶段1和阶段2都有排序,其中阶段1的排序可以基于Lucene的排序机制来完成,阶段2的排序可以通过相关排序算法完成(比如Arrays.sort(hitdoc[]))。

 

当前,阶段1的排序是根据相关性打分来排序,阶段2的排序是根据将阶段1的产生的结果的打分(对原始相关性打分做了改造:(int)score * 100)排序,并且阶段2待排序的是各个节点汇总后的数据,阶段2的排序结果将最终展示给用户。

 

如果,想要对结果根据时间, 分数+时间, 分数 来排序,该如何实现?

 

按照 分数 排序

 

Arrays.sort(hits, new Comparator<SearchHit>() {

	                    @Override
	                    public int compare(SearchHit o1, SearchHit o2) {
	                        return o1.getScore() - o2.getScore();
	                    }
   });
 

按照 时间 排序

 

Arrays.sort(hits, new Comparator<SearchHit>() {

                        @Override
                        public int compare(SearchHit doc1, SearchHit doc2) {
                            return (int) (doc1.getTime() - doc2.getTime());
                        }
   });
 

按照 分数+时间(先按分数排序,分数相同的结果按照时间排序)

 

 

Arrays.sort(hits, new Comparator<SearchHit>() {

                        @Override
                        public int compare(SearchHit doc1, SearchHit doc2) {
                            return (doc1.getScore() != doc2.getScore()) ? -(doc1.getScore() - doc2.getScore()) : (int) (doc1.getTime() - doc2.getTime());
                        }
                    });
 

 

 

按照 时间+分数 排序(先按时间排序,时间相同的结果按照分数排序)

 

 

Arrays.sort(hits, new Comparator<SearchHit>() {

                        @Override
                        public int compare(SearchHit doc1, SearchHit doc2) {
                            return (doc1.getTime() != doc2.getTime()) ? (int) (doc1.getTime() - doc2.getTime()): -(doc1.getScore() - doc2.getScore());
                        }
                    });
 

 

尽管对单个节点上的结果进行排序不影响最终给用户的显示(反而会影响性能),如果想要对单节点上数据排序,可以通过如下方式

 

按时间降序排序

 

 

//If true, then scores are returned for every matching document in //TopFieldDocs.
boolean doTrackScores = true;
boolean doMaxScore = false;
indexSearch.setDefaultFieldSortScoring(doTrackScores , doMaxScore);
Sort sort = new Sort(new SortField("time", SortField.STRING, true));
TopDocs docs = searcher.search(request.getQuery(), null, maxResultSize, sort);
 

 

Sort/SortField/FieldCache

  • 大小: 50.1 KB
分享到:
评论

相关推荐

    基于大规模日志分析的搜索引擎用户行为分析

    《基于大规模日志分析的搜索引擎用户行为分析》一文通过对搜狗搜索引擎一个月内近5000万条查询日志的分析,揭示了中文搜索引擎用户的查询习惯和行为模式,这对于改进搜索引擎算法以及提高检索结果的质量具有重要意义...

    电信设备-基于标引关联关系的信息检索排序方法.zip

    综上所述,《电信设备-基于标引关联关系的信息检索排序方法》涵盖的内容广泛且深入,包括信息检索理论、关联关系分析、排序算法、系统性能优化等多个方面,这些都是保障电信行业高效运行的重要技术基础。通过不断的...

    Milogs工作日志管理软件 V2.0 注册版(含注册文件)

    - **效率分析**:通过对日志数据的分析,可以评估工作效率,找出改进空间。 6. **协作共享** - **团队协作**:支持多人协作,团队成员可以共享日志,共同追踪项目进度。 - **权限设置**:管理员可以设定不同用户...

    电信设备-基于集成支撑矢量机排序的信息检索方法.zip

    "基于集成支撑矢量机排序的信息检索方法"是一种利用机器学习技术来改进传统信息检索过程的方法,旨在提高检索效率和准确性。此方法的核心是集成学习和支撑向量机(SVM)排序。 支撑向量机(Support Vector Machine,...

    基于大规模日志分析的搜索引擎用户行为分析.pdf

    该文通过对搜狗搜索引擎一个月内接近5000万条查询日志的大规模分析,深入探讨了中文搜索用户的检索行为特点及其对中文搜索引擎性能提升的影响。 #### 用户行为分析的重要性 用户行为分析对于网络信息检索技术的...

    元搜索引擎的查询优化研究.ppt

    用户的行为,尤其是间接行为,能够反映出他们的兴趣,这些信息可以用于改进检索结果的排序算法。例如,TSPR算法结合了页面主题性和用户兴趣,对检索结果进行个性化排序,从而提高搜索质量。 综上所述,元搜索引擎...

    电信设备-基于行为的领域信息检索方法.zip

    5. **检索策略优化**:结合用户画像,优化信息检索策略,可能包括加权排序、个性化推荐等,确保返回的检索结果与用户的行为和需求高度匹配。 6. **反馈循环**:持续监控用户对检索结果的反馈,进一步调整和改进模型...

    人工智能-项目实践-信息检索-信息检索系统大作业,web搜索引擎的实现

    在实际项目中,还需要考虑用户体验,例如提供友好的界面、提供搜索建议和相关搜索功能,以及处理查询日志以进行用户行为分析和系统改进。 综上所述,这个"人工智能-项目实践-信息检索-信息检索系统大作业"提供了从...

    lex词法分析工具 下载

    - **学习排序**(Learning to Rank):结合机器学习方法改进搜索结果的排序机制。 - **链接分析**(Link Analysis):通过对网页之间的链接关系进行分析,推断网页的重要性和相关性。 - **信息提取**(Information ...

    全文检索引擎代码(C#版).rar

    8. **性能监控和调优**:为了持续改进,开发者可能需要添加日志记录和性能监控功能,以便于跟踪和优化系统性能。 这个C#版全文检索引擎代码项目为开发者提供了一个动手实践的机会,可以深入理解搜索引擎的工作原理...

    黄玉兰提纲工作总结.pptx

    本文主要讨论的是黄玉兰的工作总结,涵盖了多个IT领域的研究与开发项目,主要包括搜索日志分析系统Smark、拼音汉字转换系统调研、有意义串相关工作以及词聚类调研。以下是这些领域的详细说明: 1. **搜索日志分析...

    仿百度检索

    10. **持续改进**:根据用户反馈和搜索日志进行分析,不断优化搜索算法和功能,提升搜索质量。 综上所述,“仿百度检索”项目涉及了数据库管理、编程、网络通信、自然语言处理等多个IT领域的知识,是一个综合性的...

    Coreseek 全文检索服务器 2.0 (Sphinx 0.9.8)参考手册

    - 权重计算用于决定结果的相关度,排序模式决定搜索结果的呈现顺序。 - 结果分组(聚类)可按某个字段进行聚合,便于浏览。 - 分布式搜索支持跨多个索引或节点进行查询,提高检索效率。 - `searchd`日志格式记录...

Global site tag (gtag.js) - Google Analytics