专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »编程综合 » lucene更新索引:Lucene.Net 2.3.1开发介绍 3、索引( 5) »正文

lucene更新索引:Lucene.Net 2.3.1开发介绍 3、索引( 5)

来源: 发布时间:星期四, 2009年1月15日 浏览:27次 评论:0
  话接上篇继续来说权重对排序影响从上面4个测试只能说是有个直观理解了“哦是!调整权重是能影响排序了但是好像没办法来分析到底如何调啊!”似乎是这样现在需要把问题放大加大索引内容到博客园新闻区用zzk找了4篇内容包含“测试”文章代码变成 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
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
56{
57  Analyzer analyzer = StandardAnalyzer;
58  IndexWriter writer = IndexWriter("IndexDirectory", analyzer, true);
59  AddDocument(writer, "微软Office 14即将展开Alpha测试", @"据国外网站WebSite消息软件Software巨头微软可能即将展开Office 14Alpha测试据消息来源声称微软下版OfficeAlpha测试日期可能在11月或12月
60
61  微软商业智能团队(Team)Hayley Rixon表示根据技术检测(TAP)他们即将展开OPPS功能进行检测和分析
62
63  其中OPPS(Office性能优化服务)是Office 14中个组成部分可对商业业绩进行分析据称OPPS Alpha项目将在8月28日发布而其他Office 14功能详情微软则没有透露
64
65  这些内容最早公布于Rixon博客不过随后该页面即被移除 ", 1.0f);
66  AddDocument(writer, "IBM和微软将测试云计算极限", @"[计世网消息](胡杨 编译) IBM iDataPlex服务器阵列将作为微软Windows高性能集群操作系统测试硬件IBM和微软将联合测试高性能计算和云计算领域极限
67
68  IBM在6月27日宣布微软将是其iDataPlex服务器阵列个客户IBM是在今年4月首次推出这个x86服务器系统主要是用于建立运计算、Web 2.0应用和高性能计算企业基础设施
69
70  在这次合作中微软Windows服务器部门计划使用个全部安装iDataPlex系统数据中心测试和评定微软Windows HPC Server 2008高性计算机能集群操作系统多年以来高性能计算和超级计算领域直由Linux占统治地位微软期待着改变这种情况微软最近宣布它将帮助建造个性能达到每秒68.5万亿次计算超级计算机
71
72  虽然微软和IBM在某些领域竞争非常激烈但是这两家公司还需要相互合作这个合作协议对于这两家公司都有帮助
73
74  对于微软来说这个合作交易将帮助微软进入进入高性能计算和超级计算机领域IBMiDataPlex能够让微软利用这个技术测试自己操作系统微软计划在公司总部附近设施中安装IBM iDataPlex系统
75
76  为了帮助进行高性能计算IBM还使用英特尔Xeon 4核5400处理器(时钟速度为3.0GHz)扩展了iDataPlex性能把IBM个新135平方英尺模块数据中心性能提高到了每秒145万亿次计算
77
78  对于IBM来说这笔交易将使iDataPlex应用有个良好起步从而为IBM赢得更多大客户IBM计划大举进入云计算领域获得微软、谷歌和雅虎等大客户 ", 1.0f);
79  AddDocument(writer, "谷歌测试人力翻译服务 有利于推广其支付平台", @"据国外媒体报道Google(谷歌)Blogscoped博客业务部门主管菲利浦·伦森 (Philipp Lenssen)近日证实该公司已推出了项人力翻译服务虽然目前该服务仍处于测试阶段但分析人士认为Google正式推出这项服务后将有利于提高Google Checkout支付平台用户数量
80
81伦森称Google这项人力翻译服务名称为“Google翻译中心”目前仅对特定测试者开放但预计不久后将扩大测试范围Google人力翻译服务大致操作流程是:翻译客户首先把需要翻译材料提交到Google翻译中心该中心把相应材料交给专业翻译人员;翻译人员完成工作后再由Google翻译中心转交给翻译客户
82
83据悉Google翻译中心可承接全球40种主要语言材料翻译任务目前还不能肯定 Google是否会担任客户和译者的间支付中间人但如果Google这样做该公司肯定会向翻译客户推荐其Google Checkout支付平台除此的外Google还可为客户和译者提供在线存储和管理工具以方便他们对翻译材料进行有序管理
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测试

  搜索词:测试

  结果:

最聪明浏览器和操作系统_得分:0.17                     //第 4条记录字数最少
微软Office 14即将展开Alpha测试_得分:0.14                //第条记录字数和第 3条相差不大
谷歌测试人力翻译服务 有利于推广其支付平台_得分:0.13         //第 3条记录和第条记录字数差不太多
IBM和微软将测试云计算极限_得分:0.12               //第 2条记录字数最多


  -----------------------------------

  可以看出文档长度测试都有影响现在试着把分少往高调把第 2条记录增加0.1权重

  搜索词:测试

  结果:

最聪明浏览器和操作系统_得分:0.17
IBM和微软将测试云计算极限_得分:0.15
微软Office 14即将展开Alpha测试_得分:0.14
谷歌测试人力翻译服务 有利于推广其支付平台_得分:0.13


  -----------------------------------

  晕倒如何上面两条也变掉了?那是Lucene.Net中权重最小文档是计算其他文档个基础其它文档分是以这个为基础算出来因此改变最小会影响好多个不过这个影响现在并没有影响排序而再加0.1就变成了:

  搜索词:测试

  结果:

最聪明浏览器和操作系统_得分:0.17
IBM和微软将测试云计算极限_得分:0.15
微软Office 14即将展开Alpha测试_得分:0.14
谷歌测试人力翻译服务 有利于推广其支付平台_得分:0.13


  -----------------------------------

  跑到第 2位去了可见每增加0.1会对结果造成很大变动而且干扰似乎也不是太大看来0.1就够了现在试试把权重还原然后调整第条记录权重增加0.1后变成:

  搜索词:测试

  结果:

微软Office 14即将展开Alpha测试_得分:0.17
最聪明浏览器和操作系统_得分:0.17
谷歌测试人力翻译服务 有利于推广其支付平台_得分:0.13
IBM和微软将测试云计算极限_得分:0.12


  -----------------------------------

  下面基础值又回去了而第条也跑到第位去了

  现在假设我要把第 2条记录调到第其他地方权重全部还原把第第 3条记录对调嘿嘿我设置个30肯定能到第位了吧!测试结果:

  搜索词:测试

  结果:

IBM和微软将测试云计算极限_得分:1.00
最聪明浏览器和操作系统_得分:0.04
微软Office 14即将展开Alpha测试_得分:0.04
谷歌测试人力翻译服务 有利于推广其支付平台_得分:0.03


  -----------------------------------

  是到第位去了不过其他文档得分都快变成0了原来在Lucene.Net中文档最高评分就是1如果旦有文档到了1那么其他文档都会根据这个1含金量进行调整比如你把它权重调成10000那么其他都会变成0但这并不会影响排序你要有耐心点点调试就会看到在文档分接近1过程中其他文档分不会发生改变旦到了1还有加其他文档分都会变低永远不会有两个文档评分都到1

  现在再来试试完全匹配把第 4条记录内容就换成测试两个字那么它评分会高达0.97分其他值般需要权重调正到8才能和它抗衡调整0.1就会对索引结果产生很大影响如果设置权重般是按套规则来做如果大家都设置很大数字得分就会都很高对于有时候需要给你广告客户设置个第位置来说就容易产生混乱混乱问题呆会再说现在要说是字数少评分太高问题有两个办法解决个就是降低字数过少内容权重但是注意不要设置为0设置为0就认为是没有包含查询关键字了;另个办法就是修改评分修改评分等说到搜索时候再来讲



  现在再来看看刚才说到混乱问题这个问题很重要如果你要设置个文档在搜索个关键字时候在第你设置了它很高权重那么问题也来了对于其他词其它它包含它也会跑到前面去看来把文档权重设置太高也不好个人认为以0.1为单位就足够了当然对于些应用需要自己把握比如对于论坛帖子个回复你给它加0.1分也不是个好主意

  以上讨论都是基于感性认识真正要研究还需要对公式增长曲线进行严格分析才能下定论!

  那要置顶要如何办呢?这就要从另外种设置权重思路方法讲起了



0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: