利用Boost影响Lucene查询结果的排序

简介: 以下代码在Lucene2.1下通过,主要是通过设置Document的Boost来影响文档的权重,以达到控制查询结果顺序的目的(前提是不利用Sort排序的情况下):private void btnSearch_Click(object sender, EventArgs e)        { ...

以下代码在Lucene2.1下通过,主要是通过设置Document的Boost来影响文档的权重,以达到控制查询结果顺序的目的(前提是不利用Sort排序的情况下):

private   void  btnSearch_Click( object  sender, EventArgs e)
        
{
            RAMDirectory ramDir 
= new RAMDirectory();
            IndexWriter iw 
= new IndexWriter(ramDir,new StandardAnalyzer(),true);

            
string[] NameList = "you are my friend""you are my wife""I love you" };
            
string[] FileList = "1""2""3" };

            
for (int i = 0; i < NameList.Length; i++)
            
{
                Document doc 
= new Document();
                doc.Add(
new Field("name", NameList[i], Field.Store.YES, Field.Index.TOKENIZED));
                doc.Add(
new Field("file", FileList[i], Field.Store.YES, Field.Index.TOKENIZED));

                
if (i == 2{ doc.SetBoost(2.0f); }//这里设置了第三个文档优先级最高,所以在搜索出来的结果中,该文档排在最前
                iw.AddDocument(doc);
            }

            iw.Close();

            IndexSearcher _searcher 
= new IndexSearcher(ramDir);
            QueryParser _parser 
= new QueryParser("name",new StandardAnalyzer());
            Query  _query 
= _parser.Parse("you");
            Hits hitDoc 
= _searcher.Search(_query);

            lstResult.Items.Clear();
//lstResult为一个ListBox

            
for (int i = 0; i < hitDoc.Length(); i++)
            
{
                Document doc 
= hitDoc.Doc(i);
                lstResult.Items.Add(doc.Get(
"file"+ " " + doc.Get("name"));
            }
            
            _searcher.Close();
        }
以下是运行结果
目录
相关文章
|
Web App开发 缓存 移动开发
V8 JS AOT化的探索与实践
JS 语言的动态性非常优秀,其弱类型等语言特性也使得一线业务开发者更容易上手,但这也导致 JS 每一次运行前都要重复编译,使得 JS 的执行性能不理想;虽然之前 UC 内核有做过 Code Cache 方案,但支持的场景不够完整,与原生 Native 的技术方案比,尤其是首次启动场景(如各类大促活动等)还是有比较大的差距。为了能尽可能做到与 Native 对标,缩小性能差距,同时让业务开发者无感,我们开发了 JS AOT 功能。本分享将结合目前集团内自有业务形态,以及 JS 在 Web 中的执行过程,介绍JS AOT是如何设计和实现的,以及能给业务带来哪些收益。本篇分享来自阿里巴巴的喻世江在第
2823 0
V8 JS AOT化的探索与实践
|
数据可视化 前端开发 Java
ElasticSearch可视化管理工具cerebro的安装与简单使用
ElasticSearch可视化管理工具cerebro的安装与简单使用
2061 0
ElasticSearch可视化管理工具cerebro的安装与简单使用
|
弹性计算 Windows
同步服务器时间NTP
在秒杀、抢券等高并发的活动中,一点点的时间延迟,也会让自己后悔莫及……
2149 0
同步服务器时间NTP
|
11月前
|
关系型数据库 OLAP OLTP
深入剖析 OALP 与 OLTP:概念、区别、技术、场景
本文深入剖析了OLTP(在线事务处理)与OLAP(在线分析处理)的概念、区别、技术及应用场景。OLTP专注于实时业务操作,确保数据一致性和高效性,适用于金融、电商等行业;OLAP则侧重于历史数据分析,支持复杂查询和多维分析,助力企业决策。两者在数据特点、系统设计、用户类型及数据库设计上存在显著差异。合理结合OLTP和OLAP,可提升企业的运营效率和决策水平。
1930 15
|
缓存 监控 前端开发
SPA 首屏加载速度优化
【10月更文挑战第14天】解决 SPA 首屏加载速度慢的问题需要综合运用多种优化策略和技术。通过资源压缩、减少异步请求、优化渲染流程、利用缓存、代码分割、预加载等方法,可以有效提高 SPA 首屏加载速度,为用户提供更好的体验。同时,性能监控和分析是持续优化的关键,应根据实际情况不断调整优化策略。在未来,随着技术的不断发展,我们还需要不断探索新的优化方法和途径,以适应不断变化的需求。
342 56
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
《人工智能助力社会学研究:数据挖掘与分析方法的深度探索》
在数字化时代,人工智能(AI)正深刻改变社会学研究格局。AI强大的数据挖掘和分析能力,如机器学习算法、自然语言处理、社交网络分析及深度学习等,为社会学家提供了全新视角和工具,助力分类、预测、情感分析及复杂数据处理。同时,AI辅助的社会调查研究提升了问卷设计和样本生成的效率与质量。然而,应用AI时需关注数据质量和伦理问题,以确保研究的科学性和客观性。总之,AI为社会学研究带来了创新方法和广阔前景。
434 11
|
传感器 安全 Java
如何使用 CoAP 协议进行设备通信
CoAP(Constrained Application Protocol)是一种适用于资源受限设备的轻量级协议,常用于物联网(IoT)设备之间的通信。本文介绍如何使用 CoAP 协议进行设备通信,包括协议的基本概念、消息格式、请求与响应流程以及实际应用示例。
1713 3
|
存储 机器学习/深度学习 算法
Transformers 加速的一些常用技巧
Transformers架构因自注意力机制面临训练过程中的内存不足和GPU限制问题,主要源于大量参数、自注意力计算的高复杂度以及激活状态存储。为解决这些问题,常用策略包括:固定长度填充(使用注意力掩码处理填充部分)、动态填充(每批内序列长度相同)和等长匹配(按序列长度分组批量处理),以及自动混合精度(AMP)训练,通过float16降低内存使用和加速计算。尽管如此,大型模型仍可能需要高性能GPU支持。
436 3
|
安全 搜索推荐 定位技术
一张图30个知识点,全方位认知 Elasticsearch 技术发展
一张图30个知识点,全方位认知 Elasticsearch 技术发展
|
算法
数据结构和算法学习记录——二叉搜索树的插入操作、删除操作
数据结构和算法学习记录——二叉搜索树的插入操作、删除操作
262 0