首页 »编程综合 » lucene更新索引:Lucene.Net 2.3.1开发介绍 3、索引( 5) »正文
lucene更新索引:Lucene.Net 2.3.1开发介绍 3、索引( 5)
来源: 发布时间:星期四, 2009年1月15日 浏览:27次 评论:0
话接上篇 ![](/icons/49591dou.gif) 继续来说权重对排序 ![](/icons/49591de.gif) 影响 ![](/icons/49591dou2.gif) 从上面 ![](/icons/49591de.gif) 4个测试 ![](/icons/49591dou.gif) 只能说是有个直观 ![](/icons/49591de.gif) 理解了 ![](/icons/49591dou2.gif) “哦 ![](/icons/49591dou.gif) 是!调整权重是能影响排序了 ![](/icons/49591dou.gif) 但是好像没办法来分析到底如何调啊!” ![](/icons/49591dou2.gif) 似乎是这样 ![](/icons/49591dou.gif) 现在需要把问题放大 ![](/icons/49591dou.gif) 加大索引 ![](/icons/49591de.gif) 内容 ![](/icons/49591dou2.gif) 到博客园新闻区 ![](/icons/49591dou.gif) 用zzk找了4篇内容包含“测试” ![](/icons/49591de.gif) 文章 ![](/icons/49591dou2.gif) 代码变成 2.1.5 代码2.1.5 1using ; 2using .Collections.Generic; 3using Lucene.Net.Analysis; 4using Lucene.Net.Analysis.Standard; 5using Lucene.Net.Documents; 6using Lucene.Net.Index; 7using Lucene.Net.QueryParsers; 8using Lucene.Net.Search; 9using NUnit.Framework; 10 11 Test 12{ 13 [TestFixture] 14 public StandardAnalyzerCaseTest 15 { 16 /**//// <summary> 17 /// 执行测试 入口 18 /// </summary> 19 [Test] 20 public void SearcherTest![](/icons/49591kh.gif) 21 { 22 Index ; 23 List< > list = List< > { "测试" }; 24 for ( i = 0; i < list.Count; i ) 25 { 26 Console.WriteLine("搜索词:" + list[i]); 27 Console.WriteLine("结果:"); 28 Searcher(list[i]); 29 Console.WriteLine("-----------------------------------"); 30 } 31 } 32 33 /**//// <summary> 34 /// 搜索 35 /// </summary> 36 /// <param name="query ">搜索输入</param> 37 private void Searcher( query ) 38 { 39 Analyzer analyzer = StandardAnalyzer ; 40 IndexSearcher searcher = IndexSearcher("IndexDirectory"); 41 QueryParser parser = QueryParser("content", analyzer); 42 Query query = parser.Parse(query ); 43 Hits hits = searcher.Search(query); 44 for ( i = 0; i < hits.Length ; i ) 45 { 46 Document doc = hits.Doc(i); 47 48 Console.WriteLine(doc.Get("title") + "_得分:" + hits.Score(i). ("f2")); 49 } 50 } 51 52/**//// <summary> 53/// 索引数据 54/// </summary> 55private void Index![](/icons/49591kh.gif) 56{ 57 Analyzer analyzer = StandardAnalyzer ; 58 IndexWriter writer = IndexWriter("IndexDirectory", analyzer, true); 59 AddDocument(writer, "微软Office 14即将展开Alpha测试", @"据国外网站WebSite消息 软件Software巨头微软可能即将展开Office 14 Alpha测试 据消息来源声称 微软下 版Office Alpha测试日期可能在11月或12月![](/icons/49591dou2.gif) 60 61 微软商业智能团队(Team) Hayley Rixon表示 根据技术检测 (TAP) 他们即将展开OPPS功能进行检测和分析![](/icons/49591dou2.gif) 62 63 其中OPPS(Office性能优化服务)是Office 14中![](/icons/49591de.gif) 个组成部分 可对商业业绩进行分析 据称OPPS Alpha项目将在8月28日发布 而其他Office 14功能 详情微软则没有透露![](/icons/49591dou2.gif) 64 65 这些内容最早公布于Rixon 博客 不过随后该页面即被移除 ", 1.0f); 66 AddDocument(writer, "IBM和微软将测试云计算 新 极限", @"[计世网消息](胡杨 编译) IBM iDataPlex服务器阵列将作为微软Windows高性能集群操作系统 测试硬件 IBM和微软将联合测试高性能计算和云计算领域 新 极限![](/icons/49591dou2.gif) 67 68 IBM在6月27日宣布 微软将是其iDataPlex服务器阵列 第 个客户 IBM是在今年4月首次推出这个x86服务器系统![](/icons/49591de.gif) 主要是用于建立运计算、Web 2.0应用 和高性能计算 企业基础设施![](/icons/49591dou2.gif) 69 70 在这次合作中 微软Windows服务器部门计划使用 个全部安装iDataPlex系统 数据中心测试和评定微软Windows HPC Server 2008高性计算机能集群操作系统 多年以来 高性能计算和超级计算领域 直由Linux占统治地位 微软期待着改变这种情况 微软最近宣布 它将帮助建造 个性能达到每秒68.5万亿次计算 超级计算机![](/icons/49591dou2.gif) 71 72 虽然微软和IBM在某些领域 竞争非常激烈 但是 这两家公司还需要相互合作 这个合作协议对于这两家公司都有帮助![](/icons/49591dou2.gif) 73 74 对于微软来说 这个合作交易将帮助微软进入进入高性能计算和超级计算机领域 IBM iDataPlex能够让微软利用这个技术测试自己 操作系统 微软计划在公司总部附近 设施中安装IBM iDataPlex系统![](/icons/49591dou2.gif) 75 76 为了帮助进行高性能计算 IBM还使用英特尔Xeon 4核5400处理器(时钟速度为3.0GHz)扩展了iDataPlex 性能 把IBM![](/icons/49591de.gif) 个新 135平方英尺 模块数据中心 性能提高到了每秒145万亿次计算![](/icons/49591dou2.gif) 77 78 对于IBM来说 这笔交易将使iDataPlex 应用有 个良好 起步 从而为IBM赢得更多 大客户 IBM计划大举进入云计算领域 获得微软、谷歌和雅虎等大客户 ", 1.0f); 79 AddDocument(writer, "谷歌测试人力翻译服务 有利于推广其支付平台", @"据国外媒体报道 Google(谷歌)Blogscoped博客业务部门主管菲利浦·伦森 (Philipp Lenssen)近日证实 该公司已推出了 项人力翻译服务 虽然目前该服务仍处于测试阶段 但分析人士认为 Google正式推出这项服务后 将有利于提高Google Checkout支付平台 用户数量![](/icons/49591dou2.gif) 80 81伦森称 Google这项人力翻译服务名称为“Google翻译中心” 目前仅对特定测试者开放 但预计不久后将扩大测试范围 Google人力翻译服务 大致操作流程是:翻译客户首先把需要翻译 材料提交到Google翻译中心 该中心把相应材料交给专业翻译人员;翻译人员完成工作后 再由Google翻译中心转交给翻译客户![](/icons/49591dou2.gif) 82 83据悉 Google翻译中心可承接全球40种主要语言材料 翻译任务 目前还不能肯定 Google是否会担任客户和译者的间支付中间人 但如果Google这样做 该公司肯定会向翻译客户推荐其Google Checkout支付平台 除此的外 Google还可为客户和译者提供在线存储和管理工具 以方便他们对翻译材料进行有序管理![](/icons/49591dou2.gif) 84 85分析人士还认为 鉴于Google此前推出了在线百科全书服务Knol 或许Google将聘请专业翻译人员把相应词条翻译成其他语言 从而使Knol用户量成倍增长 而这种方式也符合Google“多多益善” 内容发展战略 (编译/中涛) 86", 1.0f); 87 AddDocument(writer, "最聪明 浏览器和操作系统", @"IQ联盟维护着 个在线“60秒智商测试” 非常有意思 是 他们把测试结果和服务器上 日志进行了 番统计 将城市和国家的类地理位置 测试者使用 操作系统/浏览器等结合起来 得出了 最聪明 浏览器和操作系统 结论是:最聪明 人使用 是未知平台 Firefox(推测该平台可能是MacOS-Intel) 最笨 人使用 是IE _disibledevent= Document ; 100 document.Add( Field("title", title, Field.Store.YES, Field.Index.TOKENIZED)); 101 document.Add( Field("content", content, Field.Store.YES, Field.Index.TOKENIZED)); 102 document.SetBoost(boost); 103 writer.AddDocument(document); 104 } 105 } 106}
OK ![](/icons/49591dou.gif) 测试 ![](/icons/49591yi.gif) 下 ![](/icons/49591dou2.gif) 搜索词:测试 结果: 最聪明 浏览器和操作系统_得分:0.17 //第 4条记录 字数最少 微软Office 14即将展开Alpha测试_得分:0.14 //第 条记录 字数和第 3条相差不大 谷歌测试人力翻译服务 有利于推广其支付平台_得分:0.13 //第 3条记录 和第 条记录字数差不太多 IBM和微软将测试云计算 新 极限_得分:0.12 //第 2条记录 字数最多 ----------------------------------- 可以看出 ![](/icons/49591dou.gif) 文档长度 ![](/icons/49591dou.gif) 测试都有 ![](/icons/49591yi.gif) 定 ![](/icons/49591de.gif) 影响 ![](/icons/49591dou2.gif) 现在试着把分少 ![](/icons/49591de.gif) 往高调 ![](/icons/49591dou2.gif) 把第 2条记录增加0.1 ![](/icons/49591de.gif) 权重 ![](/icons/49591dou2.gif) 搜索词:测试 结果: 最聪明 浏览器和操作系统_得分:0.17 IBM和微软将测试云计算 新 极限_得分:0.15 微软Office 14即将展开Alpha测试_得分:0.14 谷歌测试人力翻译服务 有利于推广其支付平台_得分:0.13 ----------------------------------- 晕倒 ![](/icons/49591dou.gif) 如何上面两条也变掉了?那是 ![](/icons/49591yinwei.gif) Lucene.Net中权重最小 ![](/icons/49591de.gif) 文档是计算其他文档 ![](/icons/49591de.gif) ![](/icons/49591yi.gif) 个基础 ![](/icons/49591dou2.gif) 其它文档 ![](/icons/49591de.gif) 分是以这个为基础 ![](/icons/49591dou.gif) 算出来 ![](/icons/49591de.gif) ![](/icons/49591dou2.gif) 因此改变最小 ![](/icons/49591de.gif) 会影响好多个 ![](/icons/49591dou2.gif) 不过这个影响现在并没有影响排序 ![](/icons/49591dou2.gif) 而再加0.1 ![](/icons/49591dou.gif) 就变成了: 搜索词:测试 结果: 最聪明 浏览器和操作系统_得分:0.17 IBM和微软将测试云计算 新 极限_得分:0.15 微软Office 14即将展开Alpha测试_得分:0.14 谷歌测试人力翻译服务 有利于推广其支付平台_得分:0.13 -----------------------------------
跑到第 2位去了 ![](/icons/49591dou2.gif) 可见每增加0.1 ![](/icons/49591dou.gif) 会对结果造成很大 ![](/icons/49591de.gif) 变动 ![](/icons/49591dou2.gif) 而且干扰似乎也不是太大 ![](/icons/49591dou.gif) 看来0.1就够了 ![](/icons/49591dou2.gif) 现在试试把权重还原 ![](/icons/49591dou.gif) 然后调整第 ![](/icons/49591yi.gif) 条记录 ![](/icons/49591de.gif) 权重 ![](/icons/49591dou2.gif) 增加0.1后变成: 搜索词:测试 结果: 微软Office 14即将展开Alpha测试_得分:0.17 最聪明 浏览器和操作系统_得分:0.17 谷歌测试人力翻译服务 有利于推广其支付平台_得分:0.13 IBM和微软将测试云计算 新 极限_得分:0.12 ----------------------------------- 下面 ![](/icons/49591de.gif) 基础值又回去了 ![](/icons/49591dou.gif) 而第 ![](/icons/49591yi.gif) 条也跑到第 ![](/icons/49591yi.gif) 位去了 ![](/icons/49591dou2.gif) 现在假设我要把第 2条记录调到第 ![](/icons/49591yi.gif) 位 ![](/icons/49591dou.gif) 其他地方权重全部还原 ![](/icons/49591dou2.gif) 把第 ![](/icons/49591yi.gif) 第 3条记录对调 ![](/icons/49591yi.gif) 下 ![](/icons/49591dou2.gif) 嘿嘿 ![](/icons/49591dou.gif) 我设置个30 ![](/icons/49591dou.gif) 肯定能到第 ![](/icons/49591yi.gif) 位了吧!测试结果: 搜索词:测试 结果: IBM和微软将测试云计算 新 极限_得分:1.00 最聪明 浏览器和操作系统_得分:0.04 微软Office 14即将展开Alpha测试_得分:0.04 谷歌测试人力翻译服务 有利于推广其支付平台_得分:0.03 ----------------------------------- 是到第 ![](/icons/49591yi.gif) 位去了 ![](/icons/49591dou.gif) 不过其他文档 ![](/icons/49591de.gif) 得分都快变成0了 ![](/icons/49591dou2.gif) 原来 ![](/icons/49591dou.gif) 在Lucene.Net中 ![](/icons/49591dou.gif) 文档 ![](/icons/49591de.gif) 最高评分就是1 ![](/icons/49591dou2.gif) 如果 ![](/icons/49591yi.gif) 旦有文档到了1 ![](/icons/49591dou.gif) 那么其他文档都会根据这个1 ![](/icons/49591de.gif) 含金量进行调整 ![](/icons/49591dou2.gif) 比如你把它 ![](/icons/49591de.gif) 权重调成10000 ![](/icons/49591dou.gif) 那么其他 ![](/icons/49591de.gif) 都会变成0 ![](/icons/49591dou.gif) 但这并不会影响排序 ![](/icons/49591dou2.gif) 你要有耐心 ![](/icons/49591dou.gif) ![](/icons/49591yi.gif) 点点调试 ![](/icons/49591dou.gif) 就会看到 ![](/icons/49591dou.gif) 在文档分接近1 ![](/icons/49591de.gif) 过程中 ![](/icons/49591dou.gif) 其他文档 ![](/icons/49591de.gif) 分不会发生改变 ![](/icons/49591dou.gif) 而 ![](/icons/49591yi.gif) 旦到了1还有加 ![](/icons/49591dou.gif) 其他 ![](/icons/49591de.gif) 文档分都会变低 ![](/icons/49591dou2.gif) 永远不会有两个文档评分都到1 ![](/icons/49591dou2.gif) 现在再来试试完全匹配 ![](/icons/49591dou2.gif) 把第 4条记录 ![](/icons/49591de.gif) 内容就换成测试两个字 ![](/icons/49591dou2.gif) 那么它 ![](/icons/49591de.gif) 评分会高达0.97分 ![](/icons/49591dou2.gif) 其他值 ![](/icons/49591yi.gif) 般需要权重调正到8 ![](/icons/49591dou.gif) 才能和它抗衡 ![](/icons/49591dou2.gif) 调整0.1就会对索引结果产生很大影响 ![](/icons/49591dou.gif) 如果设置权重 ![](/icons/49591dou.gif) ![](/icons/49591yi.gif) 般是按 ![](/icons/49591yi.gif) 套规则来做 ![](/icons/49591de.gif) ![](/icons/49591dou.gif) 如果 ![](/icons/49591dou.gif) 大家都设置很大 ![](/icons/49591de.gif) 数字 ![](/icons/49591dou.gif) 得分就会都很高 ![](/icons/49591dou.gif) 对于有时候需要给你 ![](/icons/49591de.gif) 广告客户设置个第 ![](/icons/49591yi.gif) 位置来说 ![](/icons/49591dou.gif) 就容易产生混乱 ![](/icons/49591dou2.gif) 混乱 ![](/icons/49591de.gif) 问题呆会再说 ![](/icons/49591dou.gif) 现在要说 ![](/icons/49591de.gif) 是字数少 ![](/icons/49591de.gif) 评分太高 ![](/icons/49591de.gif) 问题 ![](/icons/49591dou2.gif) 有两个办法解决 ![](/icons/49591dou.gif) ![](/icons/49591yi.gif) 个就是降低字数过少内容 ![](/icons/49591de.gif) 权重 ![](/icons/49591dou.gif) 但是注意不要设置为0 ![](/icons/49591dou.gif) 设置为0就认为是没有包含查询关键字了;另 ![](/icons/49591yi.gif) 个办法就是修改评分 ![](/icons/49591dou2.gif) 修改评分等说到搜索 ![](/icons/49591de.gif) 时候再来讲 ![](/icons/49591dou2.gif) 现在再来看看刚才说到 ![](/icons/49591de.gif) 混乱问题 ![](/icons/49591dou.gif) 这个问题很重要 ![](/icons/49591dou2.gif) 如果你要设置 ![](/icons/49591yi.gif) 个文档在搜索 ![](/icons/49591yi.gif) 个关键字 ![](/icons/49591de.gif) 时候在第 ![](/icons/49591yi.gif) 位 ![](/icons/49591dou.gif) 你设置了它很高 ![](/icons/49591de.gif) 权重 ![](/icons/49591dou.gif) 那么问题也来了 ![](/icons/49591dou.gif) 对于其他词 ![](/icons/49591dou.gif) 其它它包含 ![](/icons/49591de.gif) 词 ![](/icons/49591dou.gif) 它也会跑到前面去 ![](/icons/49591dou2.gif) 看来把文档 ![](/icons/49591de.gif) 权重设置太高也不好 ![](/icons/49591dou.gif) 个人认为以0.1为单位就足够了 ![](/icons/49591dou.gif) 当然对于 ![](/icons/49591yi.gif) 些应用需要自己把握 ![](/icons/49591dou2.gif) 比如 ![](/icons/49591dou.gif) 对于论坛帖子 ![](/icons/49591dou.gif) ![](/icons/49591yi.gif) 个回复你给它加0.1分也不是个好主意 ![](/icons/49591dou2.gif) 以上 ![](/icons/49591de.gif) 讨论都是基于感性 ![](/icons/49591de.gif) 认识 ![](/icons/49591dou.gif) 真正要研究 ![](/icons/49591dou.gif) 还需要对公式 ![](/icons/49591de.gif) 增长曲线进行严格 ![](/icons/49591de.gif) 分析才能下定论! 那要置顶要如何办呢?这就要从另外 ![](/icons/49591yi.gif) 种设置权重 ![](/icons/49591de.gif) 思路方法讲起了
相关文章
读者评论
发表评论
|
|