<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>imjl</title>
    <description>2007主要方向:深度挖掘数据(大规模搜索平台), 广度挖掘商机(商业顾问)</description>
    <link>http://imjl.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>记录下我对代码的看法</title>
        <author>imjl</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imjl.javaeye.com">imjl</a>&nbsp;
          链接：<a href="http://imjl.javaeye.com/blog/214401" style="color:red;">http://imjl.javaeye.com/blog/214401</a>&nbsp;
          发表时间: 2008年07月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          有天看到某博上有招phper的，看了下，他们要求为了1ms的误差可以研究一整天的人，薪水是个某算法的某位数。<br /><br />有不同看法，所以说了几句。在这里主要记录下我的这一看法。<br /><br /><br />code我现在最看重的是可维护性。那种高效但晦涩的代码我觉得不好，理由：<br /><br />很少有人能在一个公司待到老，也就是会走，走后除非这个代码不用了，否则就需要人来维护，应该招什么样的人呢？为了这些代码招高人？高人很难招的，即便招到，维护这些代码，高手不爽，他有他的style。低手把又不能维护这些代码，重新开发？开发，测试，上线又需要很多时间。<br /><br />如果将代码写得俗气点，低手也能看得懂，至少修改时能知道该修改哪里。速度慢点，不要紧，可以靠硬件来补充。<br /><br />从钱角度来看，因此增加的硬件是一次性费用，而维护的人力成本确是长期的。<br /><br />从稳定性来看，业务修改在所难免，让一个看不懂的人去修改，有一定风险，稳定性有欠缺。<br /><br />从时间来看，有时候业务修改是比较急的，而维护者不能快速修改，而是读懂代码再修改需要的就是一个比较长的时间。
          <br/>
          <span style="color:red;">
            <a href="http://imjl.javaeye.com/blog/214401#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 13 Jul 2008 22:18:15 +0800</pubDate>
        <link>http://imjl.javaeye.com/blog/214401</link>
        <guid>http://imjl.javaeye.com/blog/214401</guid>
      </item>
      <item>
        <title>2008年已完成的工作</title>
        <author>imjl</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imjl.javaeye.com">imjl</a>&nbsp;
          链接：<a href="http://imjl.javaeye.com/blog/214393" style="color:red;">http://imjl.javaeye.com/blog/214393</a>&nbsp;
          发表时间: 2008年07月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          msn群发：php开发，freebsd下测试，100个msn帐号，25秒完成登录，常规单个是3.5秒左右。<br /><br />车的爬虫：c#开发，针对国内几家特定网站爬取数据。小东西懒得看时间，当作c#的练手。<br /><br />社区智能爬虫：自动识别当前社区的数据，大部分社区是不需要做任何配置信息，程序自动识别，支持带框架的社区，支持rss结构数据。（不支持JS, FLASH以及极少数特殊类型的社区）<br />目前是社区首页的主题，点击和回复数，根据它分析社区热度。测试17万版面，准确率大概在90%以上。<br />php测试算法，算法通过测试后，正式用c#写。识别平均速度：300ms。
          <br/>
          <span style="color:red;">
            <a href="http://imjl.javaeye.com/blog/214393#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 13 Jul 2008 21:43:39 +0800</pubDate>
        <link>http://imjl.javaeye.com/blog/214393</link>
        <guid>http://imjl.javaeye.com/blog/214393</guid>
      </item>
      <item>
        <title>中国内地高学历技术工程师十个心酸的瞬间(zt)</title>
        <author>imjl</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imjl.javaeye.com">imjl</a>&nbsp;
          链接：<a href="http://imjl.javaeye.com/blog/199547" style="color:red;">http://imjl.javaeye.com/blog/199547</a>&nbsp;
          发表时间: 2008年06月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          　　这是一个不需要工程师的年代，官员、老板、商人大行其道。<br />　　瞬间一：春节回家，经商富裕的二叔笑问：“隔壁的小王（中专毕业）当经理了，你什么时候当呢？还在搞技术？实在不行回来跟叔做生意”<br />　　瞬间二：某豪华办公室写字楼，西装革履、英气勃发的市场人员小张刚签了一大单，“提成估计够技术部的工程师们干一年多的”，美女秘书们这样议论到；远方一个角落，穿着过时T恤的白头发不少的工程师正在找一个客户强烈投诉的程序bug，苦不堪言，老板每5钟问一句：“什么时候能搞定？不就是几行代码么，那么难？我当年写程序的时候。。。”<br />　　瞬间三：一个项目，需要8个工程师，但狡猾的老板只招聘5个，一个研究生（工资6000），2个本科生（工资3000），2个专科生（工资1500），让这位研究生当项目组长，这位研究生同学欣然答应，项目进入高峰，明显人不够，但是这位研究生同学为了对得起老板给他高于另外两个兄弟的工资，基本上是天天疯狂加班，老实的他、毫无怨言，黑心的老板、得意在心，时而找他谈话：“我很看好你的！”。半年后，研究生病倒了，老板赚大钱了！<br />　　瞬间四：美女秘书旁边议论：“小张才中专毕业，现在已经是小刘的领导了，小刘还是研究生呢，现在读书真的没用了啦”，说完，美女们发出一阵夸张的笑声。。。“小陈也不错啊，也混得蛮快”，“他呀，没什么前途，读这么多书才混成这样，一般般”<br />　　瞬间五：一位04年毕业的研究生，正在挤公汽上班，忽然后面有人拍了一下肩膀，一看是01年毕业的本科（没读研）老同学，开着小车，说：“我送你。。。”，其实这位研究生也不差，不过他买的是12000/平米的房子，所以经济紧张，而他的本科老同学3年前买的是5000/平米，少供他80多万贷款，于是买了车还有不少存款。<br />　　瞬间六：32岁的博士（某公司技术总监）去相亲，美丽时髦的女孩子可爱地问道：“你是做什么生意的？”<br />　　瞬间七：市场部工作两年的小张提升了，因为两年他签了不少大单，工程师小赵想到：“我工作四年了，写程序数万行，什么时候提我啊？写程序真的好累。。。”，晚上，老同学打来电话：“还没转市场和管理？”<br />　　瞬间八：从事技术工作的研究生毕业的小王只要一跟老婆吵架，有一句话老婆是必骂的：“我看你是读书读傻了，或者是搞技术搞傻了，看楼上的XXX，你就那点死搞技术的出息。。。”<br />　　瞬间九：某博士下海经商，精神压力异常大，跟客户交流时候只敢说自己是专科毕业，他说：“如果我说我是博士，可能会把他们吓跑，另外，要是圈里人都知道我是博士，我只要犯一点错误，会被他们嘲笑很久，但说是专科毕业，犯错误就不会被笑话”<br />　　瞬间十：父母生病，在家里经商的弟弟一下子拿出了XX万治病，而研究生毕业的哥哥只能拿出一点点，被亲戚们数落不孝，老家的亲戚们不会知道大城市的房价，他们也不需要知道。
          <br/>
          <span style="color:red;">
            <a href="http://imjl.javaeye.com/blog/199547#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 02 Jun 2008 21:26:01 +0800</pubDate>
        <link>http://imjl.javaeye.com/blog/199547</link>
        <guid>http://imjl.javaeye.com/blog/199547</guid>
      </item>
      <item>
        <title>智能型爬虫还在research</title>
        <author>imjl</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imjl.javaeye.com">imjl</a>&nbsp;
          链接：<a href="http://imjl.javaeye.com/blog/185169" style="color:red;">http://imjl.javaeye.com/blog/185169</a>&nbsp;
          发表时间: 2008年04月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          根据当前测试，目前算法预计将能成功65-70%，中间无需任何人工参与。<br /><br />测试完成后将视结果是否立项？立项标准是90%，难度不小，要保持准确和速度。<br /><br />测试语言：php，但是实际开发语言可能会用c#。<br /><br />数据规模每天增量大约50万，数据保存至少半年，那么数据至少9000万，这将是个很庞大的规模。<br /><br />虽说爬虫将独立运作，但是我觉得还是需要建立爬虫监控系统，并且参考MapReduce部分设计将性能拉到最大。<br /><br />搜索应该会采用新版本的solr（估计用得时候会出来），希望这次自己修改的比较少。<br /><br /><br /><br />je怎么没有回自己的功能....我只好修改下<br /><br />数据如果要跑的话,增量将是50万的100倍,,, 当然不可能跑这么多.<br /><br />目前测试结果是80%的准确率, 下周应该还能提升准确率, 完成第一个测试. 如此下去某公司的优势应该不存在了. <br />做得比较吃力, 但是想想能这个够刺激, 所以写得比较high.<br /><br /><br />今天边看灾情边看hadoop, 做datanode满适合的. 看了下, 目前solr+hadoop的还没人做, 只听说aol在研究. 不知道是否会开源, 如果没有, 那就要自己整合了, 要么用c++写php的扩展来操作hadoop, 要么就是用python, 当然php操作java来完成也可以.到时候看效率和稳定性把.<br /><br /><br />目前偏向python, 理由: 我很懒.
          <br/>
          <span style="color:red;">
            <a href="http://imjl.javaeye.com/blog/185169#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 21 Apr 2008 20:55:59 +0800</pubDate>
        <link>http://imjl.javaeye.com/blog/185169</link>
        <guid>http://imjl.javaeye.com/blog/185169</guid>
      </item>
      <item>
        <title>今天刚发现自己一个惯性动作</title>
        <author>imjl</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imjl.javaeye.com">imjl</a>&nbsp;
          链接：<a href="http://imjl.javaeye.com/blog/178226" style="color:red;">http://imjl.javaeye.com/blog/178226</a>&nbsp;
          发表时间: 2008年03月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          用c#写爬虫入库时，出错，关键词不大好打，直接问同事，测试了下，好像字段定义有问题<br /><br />于是要检查字符串长度<br /><br /><br />我习惯性的打开zend studio，就要打php code来看字符串长度。（我就记得两行代码可以解决）<br /><br />弄得旁边的同事大叫，这用不着code把？<br /><br />我很汗<img src="/images/smiles/icon_redface.gif"/><br /><br />于是遵从他的建议，打开editplus，选中字符串右键居然有个统计，虽然我也常用editplus，但从来没用过右键。<img src="/images/smiles/icon_redface.gif"/><br /><br /><br />刚看到一cuer居然不会用office，想想我今天的惯性动作，回想了以前的行为，经常会有种写也许比查或者找工具解决来得快。<br /><br /><br />看来我比较适合coder这份工作。<br /><br /><br />ps：那为什么只有北京的公司不断邀请，确很少有上海的。（虽然我一份求职信都没发，这也许和我的圈子有关把）
          <br/>
          <span style="color:red;">
            <a href="http://imjl.javaeye.com/blog/178226#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 31 Mar 2008 22:58:41 +0800</pubDate>
        <link>http://imjl.javaeye.com/blog/178226</link>
        <guid>http://imjl.javaeye.com/blog/178226</guid>
      </item>
      <item>
        <title>最近的情况</title>
        <author>imjl</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imjl.javaeye.com">imjl</a>&nbsp;
          链接：<a href="http://imjl.javaeye.com/blog/176034" style="color:red;">http://imjl.javaeye.com/blog/176034</a>&nbsp;
          发表时间: 2008年03月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          看msn协议和有关开源的代码，文档真够少的。<br /><br />用dotnet写爬虫<br /><br />前段时间说不上的搜索又要上了。<br /><br />合同要到期了，签？<br /><br /><br />python很酷，昨天翻了下python的书，真不错。<br /><br />雅虎一哥们推荐的深入浅出mysql，面面俱到，不够深入。<br /><br />书都是china-pub买得，那个包装真不是一般的寒碜，一个塑料袋还是破的。两本书100多块，这包装怎么也得好点把。<br /><br />买了macbook，苹果系统还真好玩。
          <br/>
          <span style="color:red;">
            <a href="http://imjl.javaeye.com/blog/176034#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 25 Mar 2008 21:05:51 +0800</pubDate>
        <link>http://imjl.javaeye.com/blog/176034</link>
        <guid>http://imjl.javaeye.com/blog/176034</guid>
      </item>
      <item>
        <title>30分钟搭建一个百万全文搜索</title>
        <author>imjl</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imjl.javaeye.com">imjl</a>&nbsp;
          链接：<a href="http://imjl.javaeye.com/blog/170003" style="color:red;">http://imjl.javaeye.com/blog/170003</a>&nbsp;
          发表时间: 2008年03月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>公司重心转移，不再是搜索。所以比较有空写写博。
</p><p>&nbsp;</p><p>
solr是lucene的企业级扩展，很好很强大。solr的性能 http://wiki.apache.org/solr/SolrPerformanceData， 现在使用solr的网站 http://wiki.apache.org/solr/PublicServers

</p><p>&nbsp;</p><p>我习惯使用tomcat，安装参考：http://wiki.apache.org/solr/SolrTomcat，当然你也可以使用其他Contains来安装。（现在的wiki真详细，以前都靠自己摸索）

如果安装成功，浏览器地址栏输入： http://localhost:8080/solr/admin/, 看到管理界面，那么继续。</p><p>&nbsp;</p><p>

找个支持lucene的中文analyzer，，比如lucene自带的cjk，修改solr的schema.xml中的
field，比如德国的（记得把注释去掉）
    
      
    
你可以参考修改成
    
      
    

然后在搜索filed，改成自己的field，比如全文检索简单的是id, title, body
比如我将原来的
   
   
   
修改成
   
   
   

保存好，重新启动tomcat，输入
<a href="http://localhost:8080/solr/admin/analysis.jsp?name=title&amp;verbose=on&amp;highlight=on&amp;val=aa&amp;qval=" target="_blank">http://localhost:8080/solr/admin/analysis.jsp?name=title&amp;verbose=on&amp;highlight=on&amp;val=aa&amp;qval=</a>
如果一切正常，那么你就能看到title给cjk分词的处理效果。</p><p>&nbsp;</p><p>


使用solr非常简单，从数据库取出数据， 包个含程序字段有id, title, body的xml扔给solr做索引。参考：http://wiki.apache.org/solr/UpdateXmlMessages。除了xml还有csv格式数据做索引，参考：http://wiki.apache.org/solr/UpdateCSV

索引完了，我们用用看。</p><p>&nbsp;</p><p>比如我要搜索关键词：测试中文，搜索字段是title，跑到地址栏输入
<a href="http://localhost:8080/solr/select?indent=on&amp;version=2.2&amp;q=%E6%B5%8B%E8%AF%95%E4%B8%AD%E6%96%87&amp;start=0&amp;rows=10&amp;fl=" target="_blank">http://localhost:8080/solr/select?indent=on&amp;version=2.2&amp;q=%E6%B5%8B%E8%AF%95%E4%B8%AD%E6%96%87&amp;start=0&amp;rows=10&amp;fl=</a>*%2Cscore&amp;qt=title&amp;wt=standard&amp;explainOther=&amp;hl.fl=
根据自己情况输入关键词和字段，如果得到你要的结果，那么恭喜你，你能搭建一个百万搜索了。</p><p>&nbsp;</p><p>

百万搜索真的这么简单么？没啦，不同业务不一样，复杂的很复杂。</p><p>&nbsp;</p><p>



大家看下教程 http://lucene.apache.org/solr/tutorial.html，wiki： http://wiki.apache.org/solr

solr</p><p>&nbsp;</p><p>现在的release版本是1.2， 1.3还在开发中，现在还有少量bug还没解决，估计快要release了，如果不急于production的，先用1.2熟悉，用1.3上production。如果大家急着用solr的svn版本，其lucene是最新版本。










</p><p>&nbsp;</p><p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://imjl.javaeye.com/blog/170003#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 10 Mar 2008 23:14:15 +0800</pubDate>
        <link>http://imjl.javaeye.com/blog/170003</link>
        <guid>http://imjl.javaeye.com/blog/170003</guid>
      </item>
      <item>
        <title>关于房价我的一点想法</title>
        <author>imjl</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imjl.javaeye.com">imjl</a>&nbsp;
          链接：<a href="http://imjl.javaeye.com/blog/160674" style="color:red;">http://imjl.javaeye.com/blog/160674</a>&nbsp;
          发表时间: 2008年01月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          现在的房价，还有不少人进入。<br /><br />房子少的可怜，人在不断长，尤其是大城市，还有很多外来人口。如此下去，大城市离鸟笼不会远了。这让我想起“一生辛劳能的盒子不错了”<br /><br />从小我们就知道“中国地大物博”，不知道此刻的孩子们是否知道？ 地大的中国房子却少的很，物博的中国物价快速飙升。<br /><br />如此下去，若干年后我们的子孙会住在什么地方？他们能否吃到自然生长的东西？还是如同一些科幻片一样，到处倒是辐射，到处都是垃圾，人与爬虫，老鼠抢食？
          <br/>
          <span style="color:red;">
            <a href="http://imjl.javaeye.com/blog/160674#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 31 Jan 2008 10:53:10 +0800</pubDate>
        <link>http://imjl.javaeye.com/blog/160674</link>
        <guid>http://imjl.javaeye.com/blog/160674</guid>
      </item>
      <item>
        <title>介绍solr</title>
        <author>imjl</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imjl.javaeye.com">imjl</a>&nbsp;
          链接：<a href="http://imjl.javaeye.com/blog/157701" style="color:red;">http://imjl.javaeye.com/blog/157701</a>&nbsp;
          发表时间: 2008年01月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          介绍solr<br /><br />solr是lucene的拓展，是cnet在使用lucene的一个应用而出的开源项目。具体参看wiki。<br /><br />跟踪这个开源项目至今快1年半了，具体时间我想不起了。<br /><br />现在国内用的人还太少，我只碰到两个人问我中文的事情。以前关于它的文字在我以前的blog，那里我很久没更新了。(myopera给和谐了)<br /><br />国内的介绍文档比较老，solr更新了很多，现在的release版本是1.2，1.3也快出来了。<br /><br /><br />使用：程序将数据合成xml（cvs）格式发送给solr就可以完成索引。搜索根据solr提供的方式可以获得xml,json,php,python很多格式数据。<br /><br />所以当前大多数开发语言都可以用来和solr搭配做全文检索系统，相当方便。<br /><br />很多大型网站如cnet，netflix，digg，aol都使用了它。<br /><br /><br />如果你感兴趣的话，我建议你到官网上看教程和wiki以及文档，现在的中文文档都太老，翻译和理解也不是很准确。如果想深入或者学习应用中碰到问题，你可以加入solr的mail-list，当然也可以到我发起的一个lucene的爱好者 http://lucene-group.group.javaeye.com/
          <br/>
          <span style="color:red;">
            <a href="http://imjl.javaeye.com/blog/157701#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 20 Jan 2008 00:15:53 +0800</pubDate>
        <link>http://imjl.javaeye.com/blog/157701</link>
        <guid>http://imjl.javaeye.com/blog/157701</guid>
      </item>
      <item>
        <title>对分词感兴趣的可以来看下</title>
        <author>imjl</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imjl.javaeye.com">imjl</a>&nbsp;
          链接：<a href="http://imjl.javaeye.com/blog/145775" style="color:red;">http://imjl.javaeye.com/blog/145775</a>&nbsp;
          发表时间: 2007年12月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://ftp.monash.edu.au/pub/nihongo/00INDEX.html" target="_blank">http://ftp.monash.edu.au/pub/nihongo/00INDEX.html</a>
          <br/>
          <span style="color:red;">
            <a href="http://imjl.javaeye.com/blog/145775#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 04 Dec 2007 10:32:02 +0800</pubDate>
        <link>http://imjl.javaeye.com/blog/145775</link>
        <guid>http://imjl.javaeye.com/blog/145775</guid>
      </item>
      <item>
        <title>用上gmail新版了。。</title>
        <author>imjl</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imjl.javaeye.com">imjl</a>&nbsp;
          链接：<a href="http://imjl.javaeye.com/blog/138782" style="color:red;">http://imjl.javaeye.com/blog/138782</a>&nbsp;
          发表时间: 2007年11月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          刚发完邮件，，看到了。。<br /><br />真不错。
          <br/>
          <span style="color:red;">
            <a href="http://imjl.javaeye.com/blog/138782#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 07 Nov 2007 15:08:51 +0800</pubDate>
        <link>http://imjl.javaeye.com/blog/138782</link>
        <guid>http://imjl.javaeye.com/blog/138782</guid>
      </item>
      <item>
        <title>[zz] Lucene goodness</title>
        <author>imjl</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imjl.javaeye.com">imjl</a>&nbsp;
          链接：<a href="http://imjl.javaeye.com/blog/138025" style="color:red;">http://imjl.javaeye.com/blog/138025</a>&nbsp;
          发表时间: 2007年11月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h2><a href="http://lucene.grantingersoll.com/2007/11/02/lucene-goodness/" title="Permanent Link: Lucene goodness" rel="bookmark">Lucene goodness</a></h2>
<div class="entrytext">
<p>Lots of good things happening in Lucene land lately, all of which should benefit users with faster indexing and searching capabilities.&nbsp; Most notably, Lucene 2.3 (hopefully released this quarter) has some major changes in indexing memory management and performance.&nbsp; I have personally clocked indexing using release 2.2 at about 400 rec/s (single threaded, Mac Pro dual CPU/dual core, using the contrib/benchmark indexing.alg) to over 2,100 records/s on 2.3-dev (the latest trunk).&nbsp; It also features easier control of the indexing process by specifying how much memory to give it, instead of the confusing maxBufferedDocs factor.</p>
<p>Other work being undertaken should speed up reopening IndexReader&rsquo;s.&nbsp; There also are a number of smaller changes including a faster StandardTokenizer (the tokenizer most people use) and faster term vector access.</p>
<p>Of course, with that comes more testing and a greater need to make sure the next release is rock solid and backwards compatible.&nbsp;&nbsp; So, if you are a Lucene user, I would encourage you to give trunk a try on some of your non-production indexes, etc. and help us test it out.</p>
<p>&nbsp;</p>
<p>link from <font face="Arial">http://lucene.grantingersoll.com/2007/11/02/lucene-goodness/</font></p>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://imjl.javaeye.com/blog/138025#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 05 Nov 2007 11:55:40 +0800</pubDate>
        <link>http://imjl.javaeye.com/blog/138025</link>
        <guid>http://imjl.javaeye.com/blog/138025</guid>
      </item>
      <item>
        <title>分布式系统之分</title>
        <author>imjl</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imjl.javaeye.com">imjl</a>&nbsp;
          链接：<a href="http://imjl.javaeye.com/blog/130870" style="color:red;">http://imjl.javaeye.com/blog/130870</a>&nbsp;
          发表时间: 2007年10月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>数据达到一定规模，一台机器不能满足你要求，也许你该考虑分布式。</p>
<p>那么如何分，分的合理。</p>
<p>我觉得可以从这几方面考虑：</p>
<p>1： 业务</p>
<p>2： 效率</p>
<p>3： 余</p>
<p>&nbsp;</p>
<p>业务：不同业务会有不一样的划分。举个简单例子，比如我有博客和mp3搜索两部分，这两者对于业务而言，是两个独立部分。那么将博客的索引放在一起，mp3的索引放在一起。</p>
<p>效率：程序设计，操作系统和硬件资源结合。合理使用硬件资源是重点。常见的mysql的isam+innodb的搭配。</p>
<p>余：通常它是在前面两者都不能分的时候才会用到。将资源划分成n分，采用余的方式，将资源划分。</p>
<p>&nbsp;</p>
<p>复杂的分布式是这几种结合。分布式的好坏将决定你整个系统的扩展，稳定，效率。</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://imjl.javaeye.com/blog/130870#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 10 Oct 2007 20:37:43 +0800</pubDate>
        <link>http://imjl.javaeye.com/blog/130870</link>
        <guid>http://imjl.javaeye.com/blog/130870</guid>
      </item>
      <item>
        <title>我的数据表设计</title>
        <author>imjl</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imjl.javaeye.com">imjl</a>&nbsp;
          链接：<a href="http://imjl.javaeye.com/blog/126276" style="color:red;">http://imjl.javaeye.com/blog/126276</a>&nbsp;
          发表时间: 2007年09月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>工作学习中碰到一些老表，有些不同想法。</p>
<p>举例说明:</p>
<p>用户登录系统:</p>
<p>传统： id, uId, uPs, uName, uDesc,&nbsp;uMail, uLogo,&nbsp;regTime, isBlocked, lastInTime一般一个表就可以。</p>
<p>对于并发用户多的话，那么就点问题。</p>
<p>每次用户登录时，都会对该表进行读操作。登录成功后，都会更新用户的lastInTime（最后登录时间），也就是写操作，中间用户还可能修改其uDesc,&nbsp; uMail, uLogo(用户简要描述，用户mail，用户的logo图片来个性化自己).</p>
<p>这是读写的差异，实际上按照我们功能定义，对表的操作也可以分为经常读，很少读，经常写，很少写。</p>
<p>那么如何分？</p>
<p>我记得sql语句使用时大家都很清楚select * 和select需要的字段这两者的差别。那么在表格设计时也可以这么做。每个表只包括需要的信息。</p>
<p>比如</p>
<p>table1: id, uId, uPs, uName, isBlocked(经常读，难得写（因为block很少用，如果用的很频繁，那就另外建表）)</p>
<p>table2: uid,&nbsp;uDesc, uMail&nbsp;, uLogo, regTime(偶尔写，偶尔读)</p>
<p>table3: uid, lastInTime...(经常写，除了lastInTime最后登录时间经常要写外，还有其他字段需要经常写)</p>
<p>这样的设计在大数据量和并发多的情况下会比较明显。小数据量和很少并发情况下，这样会增加联表操作的成本。</p>
<p>&nbsp;</p>
<p>说的不对还请大家纠正，目前我自己是按照这个思维方式来设计表的。主要是针对爬虫表。</p>
<p>当然这应该适用大多数情况。</p>
          <br/>
          <span style="color:red;">
            <a href="http://imjl.javaeye.com/blog/126276#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 23 Sep 2007 12:01:17 +0800</pubDate>
        <link>http://imjl.javaeye.com/blog/126276</link>
        <guid>http://imjl.javaeye.com/blog/126276</guid>
      </item>
      <item>
        <title>首届中国lucene爱好者聚会，，，</title>
        <author>imjl</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imjl.javaeye.com">imjl</a>&nbsp;
          链接：<a href="http://imjl.javaeye.com/blog/95038" style="color:red;">http://imjl.javaeye.com/blog/95038</a>&nbsp;
          发表时间: 2007年06月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          详情: <br /><br />http://lucene-group.group.javaeye.com/activity/18<br /><br />目的：让更多的fans加入lucene的阵营及众多lucener间的互通有无<br />地点：上海中山公园旁的星巴克（龙之梦地下一层那个）（暂定）<br />人员：跟本帖评论报名<br />内容：<br />讨论Lucene的过去、现在、未来，交流工作机会等<br />活动费用：AA制<br />腐败,饭后的活动(看人数和大家兴趣拉)<br />聚会可以拍照，摄像， 视频可以上传到一些视频网站。(暂定)<br /><br />其他：<br />寻找猎头、企业等赞助<br /><br />如果有场地的话，请说下，那么就可能来主题交流会，实际应用过的兄弟姐妹可能要准备下。<br />因此报名，请说明自己来自哪个网站，id，以及是否具备实际应用经验，如果有实际应用经验，请简单介绍下，以便于安排交流。谢谢合作。<br /><br />http://lucene-group.group.javaeye.com/activity/18
          <br/>
          <span style="color:red;">
            <a href="http://imjl.javaeye.com/blog/95038#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 28 Jun 2007 12:37:42 +0800</pubDate>
        <link>http://imjl.javaeye.com/blog/95038</link>
        <guid>http://imjl.javaeye.com/blog/95038</guid>
      </item>
      <item>
        <title>推荐一本入门书&lt;Lucene in Action&gt;</title>
        <author>imjl</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imjl.javaeye.com">imjl</a>&nbsp;
          链接：<a href="http://imjl.javaeye.com/blog/91679" style="color:red;">http://imjl.javaeye.com/blog/91679</a>&nbsp;
          发表时间: 2007年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://www.j2medev.com/ebook/UploadSoftPic/200604/20060414141245158.jpg"><img src="http://www.j2medev.com/ebook/UploadSoftPic/200604/20060414141245158.jpg" alt="" /></a><br />
<br />
<strong><br />
<br />
建议看原版。<br />
<br />
我觉得这本书能让你对lucene有一个大概的了解，要深入，靠这本书不可能的。<br />
<br />
两名作者目前现在都是lucene的Project Management Committee.<br />
<br />
有什么看法也可以回帖，大家一起讨论。如果有必要，我可以将问题转给otis本人。<img src="/javascripts/fckeditor/editor/images/smiley/msn/envelope.gif" alt="" /></strong>
          <br/>
          <span style="color:red;">
            <a href="http://imjl.javaeye.com/blog/91679#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 18 Jun 2007 20:04:39 +0800</pubDate>
        <link>http://imjl.javaeye.com/blog/91679</link>
        <guid>http://imjl.javaeye.com/blog/91679</guid>
      </item>
      <item>
        <title>搜索爱好者有家了</title>
        <author>imjl</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imjl.javaeye.com">imjl</a>&nbsp;
          链接：<a href="http://imjl.javaeye.com/blog/91339" style="color:red;">http://imjl.javaeye.com/blog/91339</a>&nbsp;
          发表时间: 2007年06月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          非常感谢javaeye能提供这么个平台，让我们这些lucene的爱好者有了能聚在一起互相学习的机会。<br />
<br />
圈子的地址： <u><font face="Arial"><a href="http://lucene-group.group.javaeye.com/">http://lucene-group.group.javaeye.com/</a></font></u>
          <br/>
          <span style="color:red;">
            <a href="http://imjl.javaeye.com/blog/91339#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 17 Jun 2007 22:08:03 +0800</pubDate>
        <link>http://imjl.javaeye.com/blog/91339</link>
        <guid>http://imjl.javaeye.com/blog/91339</guid>
      </item>
      <item>
        <title>如何检测搜索的好坏</title>
        <author>imjl</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imjl.javaeye.com">imjl</a>&nbsp;
          链接：<a href="http://imjl.javaeye.com/blog/90223" style="color:red;">http://imjl.javaeye.com/blog/90223</a>&nbsp;
          发表时间: 2007年06月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          问这个问题的是某个视频网站的技术负责人。<br />
<br />
我记得当时的回答： 最好的搜索应该是用户说了算。用户是使用者，他们用搜索的目的为了快速找到搜索结果，那么如果能让他们用最简单的方式能快速找到自己的结果，这就是最好的。<br />
<br />
现在想起来应该还有点，我之前说过的，就是从网站角度看，如何将信息聚而不散，不让信息分散。让用户能在你设定的范围内不断使用你提供的资源。<br />
<br />
这个是检测垂直搜索的。<br />
<br />
<br />
<br />
通用还没想好。
          <br/>
          <span style="color:red;">
            <a href="http://imjl.javaeye.com/blog/90223#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 14 Jun 2007 22:39:57 +0800</pubDate>
        <link>http://imjl.javaeye.com/blog/90223</link>
        <guid>http://imjl.javaeye.com/blog/90223</guid>
      </item>
      <item>
        <title>我做搜索架构的几个步骤</title>
        <author>imjl</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imjl.javaeye.com">imjl</a>&nbsp;
          链接：<a href="http://imjl.javaeye.com/blog/90220" style="color:red;">http://imjl.javaeye.com/blog/90220</a>&nbsp;
          发表时间: 2007年06月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1：用户需求，包括用户数据，数据特性，搜索习惯，更新频率，用户对其要求，以往碰到的问题<br />
<br />
2：根据经验进行第一次尝试性测试，一般少量数据。主要在满足用户需求下，看看怎么做应用优化。<br />
<br />
3：形成初步架构。上数据测试，在数据量下，有些忽略的东西就会暴露。这时候记录下信心。<br />
<br />
4： 根据2，3得到的结果。调整架构，进行极限测试。以获得该用硬件资源以及适合操作系统。<br />
<br />
5： 确定资源（这部分在实际中忽略了，因为有现有资源。）<br />
<br />
6： 完善架构辅助，比如web显示，log，moniter，怎么方便怎么来。<br />
<br />
7： 应用程序，服务器调优，上线前测试。（有台关键服务器不知道为什么停了，据说老问题，让我汗）<br />
<br />
8： 上线。（7还没做好）<br />
          <br/>
          <span style="color:red;">
            <a href="http://imjl.javaeye.com/blog/90220#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 14 Jun 2007 22:29:50 +0800</pubDate>
        <link>http://imjl.javaeye.com/blog/90220</link>
        <guid>http://imjl.javaeye.com/blog/90220</guid>
      </item>
      <item>
        <title>关于搜索，我的一些看法</title>
        <author>imjl</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imjl.javaeye.com">imjl</a>&nbsp;
          链接：<a href="http://imjl.javaeye.com/blog/87448" style="color:red;">http://imjl.javaeye.com/blog/87448</a>&nbsp;
          发表时间: 2007年06月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          目前的搜索大体分通用搜索和垂直搜索。<br />
<br />
两者差别在于信息来源，通用的范围很广，所以数据量一般都是海量。垂直的信息来源比较单一，所以数据量相对而言就小。<br />
<br />
技术角度而言，通用主要关注数据量，偏重架构设计，而垂直着重搜索的UI。<br />
<br />
<br />
如何设计好一个架构，我觉得自己还在摸索，所以不多说，感兴趣的可以看看google的paper。<br />
<br />
垂直搜索的面向是特定用户群，他们需要的是准确快速方便的找到自己想要的信息。所以如何将用户体验做好，这个难度在这里。<br />
<br />
因为是要通过搜索表现结果，那么就需要结合搜索。<br />
<br />
举几个例子现在不大好的垂直搜索：<br />
<br />
<blockquote>google的生活频道搜索，一大堆搜索条件让人选择，这明显是不懂搜索的人做的。<br />
<br />
还有些搜索，对自身业务没搞清，就往通用靠拢，根据搜索关键词来拉出些相关词。<br />
</blockquote><br />
国内我觉得不错的垂直，<br />
<blockquote>taobao。<br />
<br />
</blockquote><br />
<br />
<br />
欢迎大家讨论。
          <br/>
          <span style="color:red;">
            <a href="http://imjl.javaeye.com/blog/87448#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 06 Jun 2007 21:42:51 +0800</pubDate>
        <link>http://imjl.javaeye.com/blog/87448</link>
        <guid>http://imjl.javaeye.com/blog/87448</guid>
      </item>
      <item>
        <title>[zz]深入lucene索引机制</title>
        <author>imjl</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imjl.javaeye.com">imjl</a>&nbsp;
          链接：<a href="http://imjl.javaeye.com/blog/54962" style="color:red;">http://imjl.javaeye.com/blog/54962</a>&nbsp;
          发表时间: 2007年02月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <table cellspacing="0" border="0" height="51" cellpadding="0" width="665">
    <tbody>
        <tr valign="top">
            <td height="18" width="10"><br />
            <img src="http://www.ibm.com/i/c.gif" height="18" alt="" width="10" /></td>
            <td width="100%"><img src="http://www.ibm.com/i/c.gif" height="6" alt="" width="1" /><br />
            <a href="http://www.ibm.com/developerworks/cn/" class="bctl">developerWorks 中国</a><span class="bct">&nbsp;&nbsp;&gt;&nbsp;&nbsp;</span><a href="http://www.ibm.com/developerworks/cn/java/" class="bctl">Java technology</a><span class="bct">&nbsp;|&nbsp;</span><a href="http://www.ibm.com/developerworks/cn/opensource/" class="bctl">Open source</a><span class="bct">&nbsp;&nbsp;&gt;</span><img src="http://www.ibm.com/i/c.gif" height="1" alt="" width="1" /><br />
            <h1>深入 Lucene 索引机制</h1>
            <img class="display-img" src="http://www.ibm.com/i/c.gif" height="6" alt="" width="1" /></td>
            <td class="no-print" width="192"><img src="http://www.ibm.com/developerworks/cn/i/dw.gif" height="18" alt="developerWorks" width="192" /></td>
        </tr>
    </tbody>
</table>
<table cellspacing="0" border="0" cellpadding="0" width="100%">
    <tbody>
        <tr valign="top">
            <td width="10"><img src="http://www.ibm.com/i/c.gif" height="1" alt="" width="10" /></td>
            <td width="100%">
            <table class="no-print" cellspacing="0" border="0" align="right" cellpadding="0" width="160">
                <tbody>
                    <tr>
                        <td width="10"><img src="http://www.ibm.com/i/c.gif" height="1" alt="" width="10" /></td>
                        <td>
                        <table cellspacing="0" border="0" cellpadding="0" width="150">
                            <tbody>
                                <tr>
                                    <td class="v14-header-1-small">文档选项</td>
                                </tr>
                            </tbody>
                        </table>
                        <table class="v14-gray-table-border" cellspacing="0" border="0" cellpadding="0">
                            <tbody>
                                <tr>
                                    <td class="no-padding" width="150"><img src="http://www.ibm.com/i/c.gif" height="1" alt="" width="8" /><input name="body" type="hidden" value="Lucene 是一个基于 Java 的全文检索工具包，你可以利用它来为你的应用程序加入索引和检索功能。Lucene 目前是著名的 Apache Jakarta 家族中的一个开源项目，下面我们即将学习 Lucene 的索引机制以及它的索引文件的结构。在这篇文章中，我们首先演示如何使用 Lucene 来索引文档，接着讨论如何提高索引的性能。最后我们来分析 Lucene 的索引文件结构。需要记住的是，Lucene 不是一个完整的应用程序，而是一个信息检索包，它方便你为你的应用程序添加索引和搜索功能。" /><input name="subject" type="hidden" value="深入 Lucene 索引机制" /><input name="lang" type="hidden" value="cn" /><noscript>&lt;tr valign=&quot;top&quot;&gt;&lt;td width=&quot;8&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;1&quot; width=&quot;8&quot; src=&quot;//www.ibm.com/i/c.gif&quot;/&gt;&lt;/td&gt;&lt;td width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; width=&quot;16&quot; height=&quot;16&quot; src=&quot;//www.ibm.com/i/c.gif&quot;/&gt;&lt;/td&gt;&lt;td class=&quot;small&quot; width=&quot;122&quot;&gt;&lt;p&gt;&lt;span class=&quot;ast&quot;&gt;未显示需要 JavaScript 的文档选项&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;</noscript>
                                    <table cellspacing="0" border="0" cellpadding="0" width="143">
                                        <form name="email" action="https://www.ibm.com/developerworks/secure/email-it.jsp">
                                        </form>
                                        <script language="JavaScript" type="text/javascript">
<!--
document.write('<tr valign="top"><td width="8"><img src="//www.ibm.com/i/c.gif" width="8" height="1" alt=""/></td><td width="16"><img src="//www.ibm.com/i/v14/icons/em.gif" height="16" width="16" vspace="3" alt="将此页作为电子邮件发送" /></td><td width="122"><p><a class="smallplainlink" href="javascript:document.email.submit();"><b>将此页作为电子邮件发送</b></a></p></td></tr>');
//-->
</script>
                                        <tbody>
                                            <tr valign="top">
                                                <td width="8"><img src="http://www.ibm.com/i/c.gif" height="1" alt="" width="8" /></td>
                                                <td width="16"><img src="http://www.ibm.com/i/v14/icons/em.gif" vspace="3" height="16" alt="将此页作为电子邮件发送" width="16" /></td>
                                                <td width="122">
                                                <p><a href="javascript:document.email.submit();" class="smallplainlink"><strong>将此页作为电子邮件发送</strong></a></p>
                                                </td>
                                            </tr>
                                        </tbody>
                                    </table>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                        <!--START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- 03/20/06 updated by gretchen -->  <br />
                        <table cellspacing="0" border="0" cellpadding="0" width="150">
                            <tbody>
                                <tr>
                                    <td class="v14-header-2-small">拓展 Tomcat 应用</td>
                                </tr>
                            </tbody>
                        </table>
                        <table class="v14-gray-table-border" cellspacing="0" border="0" cellpadding="0">
                            <tbody>
                                <tr>
                                    <td class="no-padding" width="150">
                                    <table cellspacing="0" border="0" cellpadding="0" width="143">
                                        <tbody>
                                            <tr valign="top">
                                                <td width="8"><img src="http://www.ibm.com/i/c.gif" height="1" alt="" width="8" /></td>
                                                <td><img src="http://www.ibm.com/i/v14/icons/fw_bold.gif" border="0" vspace="3" height="16" alt="" width="16" /></td>
                                                <td width="125">
                                                <p><a href="http://www.ibm.com/developerworks/cn/kickstart/webserver.html?S_TACT=105AGX52&amp;S_CMP=simpleart" class="smallplainlink">下载 IBM 开源 J2EE 应用服务器 WAS CE 新版本 V1.1</a> </p>
                                                </td>
                                            </tr>
                                        </tbody>
                                    </table>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                        <!--END RESERVED FOR FUTURE USE INCLUDE FILES--><br />
                        </td>
                    </tr>
                </tbody>
            </table>
            <p>级别: 中级</p>
            <p><a href="http://www.ibm.com/developerworks/cn/java/wa-lucene/#author">周 登朋</a> (<a href="mailto:zhoudengpeng@yahoo.com.cn?subject=%E6%B7%B1%E5%85%A5%20Lucene%20%E7%B4%A2%E5%BC%95%E6%9C%BA%E5%88%B6">zhoudengpeng@yahoo.com.cn</a>), 研究生, 上海交通大学<br />
            </p>
            <p>2006 年  7 月  13 日</p>
            <blockquote>
            <p>Lucene 是一个基于 Java 的全文检索工具包，你可以利用它来为你的应用程序加入索引和检索功能。Lucene 目前是著名的 Apache Jakarta 家族中的一个开源项目，下面我们即将学习 Lucene 的索引机制以及它的索引文件的结构。</p>
            <p>在这篇文章中，我们首先演示如何使用 Lucene 来索引文档，接着讨论如何提高索引的性能。最后我们来分析 Lucene 的索引文件结构。需要记住的是，Lucene 不是一个完整的应用程序，而是一个信息检索包，它方便你为你的应用程序添加索引和搜索功能。</p>
            </blockquote><!--START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters -->  <!--END RESERVED FOR FUTURE USE INCLUDE FILES-->
            <p><a name="N1004F"><span class="atitle">架构概览</span></a></p>
            <p>图一显示了 Lucene 的索引机制的架构。Lucene 使用各种解析器对各种不同类型的文档进行解析。比如对于 HTML 文档，HTML 解析器会做一些预处理的工作，比如过滤文档中的 HTML 标签等等。HTML 解析器的输出的是文本内容，接着 Lucene 的分词器(Analyzer)从文本内容中提取出索引项以及相关信息，比如索引项的出现频率。接着 Lucene 的分词器把这些信息写到索引文件中。</p>
            <br />
            <a name="N1005A"><strong>图一：Lucene 索引机制架构</strong></a><br />
            <img src="http://www.ibm.com/developerworks/cn/java/wa-lucene/images/image002.jpg" border="0" height="345" alt="图一：Lucene 索引机制架构" width="438" /> <br />
            <br />
            <table cellspacing="0" border="0" cellpadding="0" width="100%">
                <tbody>
                    <tr>
                        <td><img src="http://www.ibm.com/i/v14/rules/blue_rule.gif" height="1" alt="" width="100%" /><br />
                        <img src="http://www.ibm.com/i/c.gif" border="0" height="6" alt="" width="8" /></td>
                    </tr>
                </tbody>
            </table>
            <table class="no-print" cellspacing="0" align="right" cellpadding="0">
                <tbody>
                    <tr align="right">
                        <td><img src="http://www.ibm.com/i/c.gif" height="4" alt="" width="100%" /><br />
                        <table cellspacing="0" border="0" cellpadding="0">
                            <tbody>
                                <tr>
                                    <td valign="middle"><img src="http://www.ibm.com/i/v14/icons/u_bold.gif" border="0" height="16" alt="" width="16" /><br />
                                    </td>
                                    <td align="right" valign="top"><a href="http://www.ibm.com/developerworks/cn/java/wa-lucene/#main" class="fbox"><strong>回页首</strong></a></td>
                                </tr>
                            </tbody>
                        </table>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br />
            <br />
            <p><a name="N1006A"><span class="atitle">用Lucene索引文档</span></a></p>
            <p>接下来我将一步一步的来演示如何利用 Lucene 为你的文档创建索引。只要你能将要索引的文件转化成文本格式，Lucene 就能为你的文档建立索引。比如，如果你想为 HTML 文档或者 PDF 文档建立索引，那么首先你就需要从这些文档中提取出文本信息，然后把文本信息交给 Lucene 建立索引。我们接下来的例子用来演示如何利用 Lucene 为后缀名为 txt 的文件建立索引。</p>
            <p>1．	准备文本文件</p>
            <p>首先把一些以 txt 为后缀名的文本文件放到一个目录中，比如在 Windows 平台上，你可以放到 C:\\files_to_index 下面。</p>
            <p>2．	创建索引</p>
            <p>清单1是为我们所准备的文档创建索引的代码。</p>
            <br />
            <a name="N1007F"><strong>清单1：用 Lucene 索引你的文档</strong></a><br />
            <table cellspacing="0" border="0" cellpadding="0" width="100%">
                <tbody>
                    <tr>
                        <td class="code-outline">
                        <pre class="displaycode">package lucene.index;<br /><br />import java.io.File;<br />import java.io.FileReader;<br />import java.io.Reader;<br />import java.util.Date;<br /><br />import org.apache.lucene.analysis.Analyzer;<br />import org.apache.lucene.analysis.standard.StandardAnalyzer;<br />import org.apache.lucene.document.Document;<br />import org.apache.lucene.document.Field;<br />import org.apache.lucene.index.IndexWriter;<br /><br />/**<br /> * This class demonstrates the process of creating an index with Lucene <br /> * for text files in a directory.<br /> */<br />public class TextFileIndexer {<br /> public static void main(String[] args) throws Exception{<br />   //fileDir is the directory that contains the text files to be indexed<br />   File   fileDir  = new File(&quot;C:\\files_to_index &quot;);<br /><br />   //indexDir is the directory that hosts Lucene's index files<br />   File   indexDir = new File(&quot;C:\\luceneIndex&quot;);<br />   Analyzer luceneAnalyzer = new StandardAnalyzer();<br />   IndexWriter indexWriter = new IndexWriter(indexDir,luceneAnalyzer,true);<br />   File[] textFiles  = fileDir.listFiles();<br />   long startTime = new Date().getTime();<br /><br />   //Add documents to the index<br />   for(int i = 0; i &lt; textFiles.length; i++){<br />     if(textFiles[i].isFile() &gt;&gt; textFiles[i].getName().endsWith(&quot;.txt&quot;)){<br />       System.out.println(&quot;File &quot; + textFiles[i].getCanonicalPath() <br />              + &quot; is being indexed&quot;);<br />       Reader textReader = new FileReader(textFiles[i]);<br />       Document document = new Document();<br />       document.add(Field.Text(&quot;content&quot;,textReader));<br />       document.add(Field.Text(&quot;path&quot;,textFiles[i].getPath()));<br />       indexWriter.addDocument(document);<br />     }<br />   }<br /><br />   indexWriter.optimize();<br />   indexWriter.close();<br />   long endTime = new Date().getTime();<br /><br />   System.out.println(&quot;It took &quot; + (endTime - startTime) <br />              + &quot; milliseconds to create an index for the files in the directory &quot;<br />              + fileDir.getPath());<br />  }<br />}<br /></pre>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br />
            <p>正如清单1所示，你可以利用 Lucene 非常方便的为文档创建索引。接下来我们分析一下清单1中的比较关键的代码，我们先从下面的一条语句开始看起。</p>
            <br />
            <table cellspacing="0" border="0" cellpadding="0" width="100%">
                <tbody>
                    <tr>
                        <td class="code-outline">
                        <pre class="displaycode">Analyzer luceneAnalyzer = new StandardAnalyzer();<br /></pre>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br />
            <p>这条语句创建了类 StandardAnalyzer 的一个实例，这个类是用来从文本中提取出索引项的。它只是抽象类 Analyzer 的其中一个实现。Analyzer 也有一些其它的子类，比如 SimpleAnalyzer 等。</p>
            <p>我们接着看另外一条语句：</p>
            <br />
            <table cellspacing="0" border="0" cellpadding="0" width="100%">
                <tbody>
                    <tr>
                        <td class="code-outline">
                        <pre class="displaycode">IndexWriter indexWriter = new IndexWriter(indexDir,luceneAnalyzer,true);<br /></pre>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br />
            <p>这条语句创建了类 IndexWriter 的一个实例，该类也是 Lucene 索引机制里面的一个关键类。这个类能创建一个新的索引或者打开一个已存在的索引并为该所引添加文档。我们注意到该类的构造函数接受三个参数，第一个参数指 定了存储索引文件的路径。第二个参数指定了在索引过程中使用什么样的分词器。最后一个参数是个布尔变量，如果值为真，那么就表示要创建一个新的索引，如果 值为假，就表示打开一个已经存在的索引。</p>
            <p>接下来的代码演示了如何添加一个文档到索引文件中。</p>
            <br />
            <table cellspacing="0" border="0" cellpadding="0" width="100%">
                <tbody>
                    <tr>
                        <td class="code-outline">
                        <pre class="displaycode">Document document = new Document();<br />document.add(Field.Text(&quot;content&quot;,textReader));<br />document.add(Field.Text(&quot;path&quot;,textFiles[i].getPath()));<br />indexWriter.addDocument(document);<br /></pre>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br />
            <p>首先第一行创建了类 Document 的一个实例，它由一个或者多个的域(Field)组成。你可以把这个类想象成代表了一个实际的文档，比如一个 HTML 页面，一个 PDF 文档，或者一个文本文件。而类 Document 中的域一般就是实际文档的一些属性。比如对于一个 HTML 页面，它的域可能包括标题，内容，URL 等。我们可以用不同类型的 Field 来控制文档的哪些内容应该索引，哪些内容应该存储。如果想获取更多的关于 Lucene 的域的信息，可以参考 Lucene 的帮助文档。代码的第二行和第三行为文档添加了两个域，每个域包含两个属性，分别是域的名字和域的内容。在我们的例子中两个域的名字分别是 &quot;content&quot;和&quot;path&quot;。分别存储了我们需要索引的文本文件的内容和路径。最后一行把准备好的文档添加到了索引当中。</p>
            <p>当我们把文档添加到索引中后，不要忘记关闭索引，这样才保证 Lucene 把添加的文档写回到硬盘上。下面的一句代码演示了如何关闭索引。</p>
            <br />
            <table cellspacing="0" border="0" cellpadding="0" width="100%">
                <tbody>
                    <tr>
                        <td class="code-outline">
                        <pre class="displaycode">indexWriter.close();<br /></pre>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br />
            <p>利用清单1中的代码，你就可以成功的将文本文档添加到索引中去。接下来我们看看对索引进行的另外一种重要的操作，从索引中删除文档。</p>
            <br />
            <table cellspacing="0" border="0" cellpadding="0" width="100%">
                <tbody>
                    <tr>
                        <td><img src="http://www.ibm.com/i/v14/rules/blue_rule.gif" height="1" alt="" width="100%" /><br />
                        <img src="http://www.ibm.com/i/c.gif" border="0" height="6" alt="" width="8" /></td>
                    </tr>
                </tbody>
            </table>
            <table class="no-print" cellspacing="0" align="right" cellpadding="0">
                <tbody>
                    <tr align="right">
                        <td><img src="http://www.ibm.com/i/c.gif" height="4" alt="" width="100%" /><br />
                        <table cellspacing="0" border="0" cellpadding="0">
                            <tbody>
                                <tr>
                                    <td valign="middle"><img src="http://www.ibm.com/i/v14/icons/u_bold.gif" border="0" height="16" alt="" width="16" /><br />
                                    </td>
                                    <td align="right" valign="top"><a href="http://www.ibm.com/developerworks/cn/java/wa-lucene/#main" class="fbox"><strong>回页首</strong></a></td>
                                </tr>
                            </tbody>
                        </table>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br />
            <br />
            <p><a name="N100C5"><span class="atitle">从索引中删除文档</span></a></p>
            <p>类IndexReader负责从一个已经存在的索引中删除文档，如清单2所示。</p>
            <br />
            <a name="N100CE"><strong>清单2：从索引中删除文档</strong></a><br />
            <table cellspacing="0" border="0" cellpadding="0" width="100%">
                <tbody>
                    <tr>
                        <td class="code-outline">
                        <pre class="displaycode">File   indexDir = new File(&quot;C:\\luceneIndex&quot;);<br />IndexReader ir = IndexReader.open(indexDir);<br />ir.delete(1);<br />ir.delete(new Term(&quot;path&quot;,&quot;C:\\file_to_index\lucene.txt&quot;));<br />ir.close();<br /></pre>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br />
            <p>在清单2中，第二行用静态方法 IndexReader.open(indexDir) 初始化了类 IndexReader 的一个实例，这个方法的参数指定了索引的存储路径。类 IndexReader 提供了两种方法去删除一个文档，如程序中的第三行和第四行所示。第三行利用文档的编号来删除文档。每个文档都有一个系统自动生成的编号。第四行删除了路径 为&quot;C:\\file_to_index\lucene.txt&quot;的文档。你可以通过指定文件路径来方便的删除一个文档。值得注意的是虽然利用上述代码删 除文档使得该文档不能被检索到，但是并没有物理上删除该文档。Lucene 只是通过一个后缀名为 .delete 的文件来标记哪些文档已经被删除。既然没有物理上删除，我们可以方便的把这些标记为删除的文档恢复过来，如清单 3 所示，首先打开一个索引，然后调用方法 ir.undeleteAll() 来完成恢复工作。</p>
            <br />
            <a name="N100DB"><strong>清单3：恢复已删除文档</strong></a><br />
            <table cellspacing="0" border="0" cellpadding="0" width="100%">
                <tbody>
                    <tr>
                        <td class="code-outline">
                        <pre class="displaycode">File   indexDir = new File(&quot;C:\\luceneIndex&quot;);<br />IndexReader ir = IndexReader.open(indexDir);<br />ir.undeleteAll();<br />ir.close();<br /></pre>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br />
            <p>你现在也许想知道如何物理上删除索引中的文档，方法也非常简单。清单 4 演示了这个过程。</p>
            <br />
            <a name="N100E8"><strong>清单4：如何物理上删除文档</strong></a><br />
            <table cellspacing="0" border="0" cellpadding="0" width="100%">
                <tbody>
                    <tr>
                        <td class="code-outline">
                        <pre class="displaycode">File   indexDir = new File(&quot;C:\\luceneIndex&quot;);<br />Analyzer luceneAnalyzer = new StandardAnalyzer();<br />IndexWriter indexWriter = new IndexWriter(indexDir,luceneAnalyzer,false);<br />indexWriter.optimize();<br />indexWriter.close();<br /></pre>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br />
            <p>在清单 4 中，第三行创建了类 IndexWriter 的一个实例，并且打开了一个已经存在的索引。第 4 行对索引进行清理，清理过程中将把所有标记为删除的文档物理删除。</p>
            <p>Lucene 没有直接提供方法对文档进行更新，如果你需要更新一个文档，那么你首先需要把这个文档从索引中删除，然后把新版本的文档加入到索引中去。</p>
            <br />
            <table cellspacing="0" border="0" cellpadding="0" width="100%">
                <tbody>
                    <tr>
                        <td><img src="http://www.ibm.com/i/v14/rules/blue_rule.gif" height="1" alt="" width="100%" /><br />
                        <img src="http://www.ibm.com/i/c.gif" border="0" height="6" alt="" width="8" /></td>
                    </tr>
                </tbody>
            </table>
            <table class="no-print" cellspacing="0" align="right" cellpadding="0">
                <tbody>
                    <tr align="right">
                        <td><img src="http://www.ibm.com/i/c.gif" height="4" alt="" width="100%" /><br />
                        <table cellspacing="0" border="0" cellpadding="0">
                            <tbody>
                                <tr>
                                    <td valign="middle"><img src="http://www.ibm.com/i/v14/icons/u_bold.gif" border="0" height="16" alt="" width="16" /><br />
                                    </td>
                                    <td align="right" valign="top"><a href="http://www.ibm.com/developerworks/cn/java/wa-lucene/#main" class="fbox"><strong>回页首</strong></a></td>
                                </tr>
                            </tbody>
                        </table>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br />
            <br />
            <p><a name="N100F8"><span class="atitle">提高索引性能</span></a></p>
            <p>利用 Lucene，在创建索引的工程中你可以充分利用机器的硬件资源来提高索引的效率。当你需要索引大量的文件时，你会注意到索引过程的瓶颈是在往磁盘上写索 引文件的过程中。为了解决这个问题, Lucene 在内存中持有一块缓冲区。但我们如何控制 Lucene 的缓冲区呢？幸运的是，Lucene 的类 IndexWriter 提供了三个参数用来调整缓冲区的大小以及往磁盘上写索引文件的频率。</p>
            <p>1．合并因子（mergeFactor）</p>
            <p>这个参数决定了在 Lucene 的一个索引块中可以存放多少文档以及把磁盘上的索引块合并成一个大的索引块的频率。比如，如果合并因子的值是 10，那么当内存中的文档数达到 10 的时候所有的文档都必须写到磁盘上的一个新的索引块中。并且，如果磁盘上的索引块的隔数达到 10 的话，这 10 个索引块会被合并成一个新的索引块。这个参数的默认值是 10，如果需要索引的文档数非常多的话这个值将是非常不合适的。对批处理的索引来讲，为这个参数赋一个比较大的值会得到比较好的索引效果。</p>
            <p>2．最小合并文档数</p>
            <p>这个参数也会影响索引的性能。它决定了内存中的文档数至少达到多少才能将它们写回磁盘。这个参数的默认值是10，如果你有足够的内存，那么将这个值尽量设的比较大一些将会显著的提高索引性能。</p>
            <p>3．最大合并文档数</p>
            <p>这个参数决定了一个索引块中的最大的文档数。它的默认值是 Integer.MAX_VALUE，将这个参数设置为比较大的值可以提高索引效率和检索速度，由于该参数的默认值是整型的最大值，所以我们一般不需要改动这个参数。</p>
            <p>清单 5 列出了这个三个参数用法，清单 5 和清单 1 非常相似，除了清单 5 中会设置刚才提到的三个参数。</p>
            <br />
            <a name="N10116"><strong>清单5：提高索引性能</strong></a><br />
            <table cellspacing="0" border="0" cellpadding="0" width="100%">
                <tbody>
                    <tr>
                        <td class="code-outline">
                        <pre class="displaycode">/**<br /> * This class demonstrates how to improve the indexing performance <br /> * by adjusting the parameters provided by IndexWriter.<br /> */<br />public class AdvancedTextFileIndexer  {<br />  public static void main(String[] args) throws Exception{<br />    //fileDir is the directory that contains the text files to be indexed<br />    File   fileDir  = new File(&quot;C:\\files_to_index&quot;);<br /><br />    //indexDir is the directory that hosts Lucene's index files<br />    File   indexDir = new File(&quot;C:\\luceneIndex&quot;);<br />    Analyzer luceneAnalyzer = new StandardAnalyzer();<br />    File[] textFiles  = fileDir.listFiles();<br />    long startTime = new Date().getTime();<br /><br />    int mergeFactor = 10;<br />    int minMergeDocs = 10;<br />    int maxMergeDocs = Integer.MAX_VALUE;<br />    IndexWriter indexWriter = new IndexWriter(indexDir,luceneAnalyzer,true);        <br />    indexWriter.mergeFactor = mergeFactor;<br />    indexWriter.minMergeDocs = minMergeDocs;<br />    indexWriter.maxMergeDocs = maxMergeDocs;<br /><br />    //Add documents to the index<br />    for(int i = 0; i &lt; textFiles.length; i++){<br />      if(textFiles[i].isFile() &gt;&gt; textFiles[i].getName().endsWith(&quot;.txt&quot;)){<br />        Reader textReader = new FileReader(textFiles[i]);<br />        Document document = new Document();<br />        document.add(Field.Text(&quot;content&quot;,textReader));<br />        document.add(Field.Keyword(&quot;path&quot;,textFiles[i].getPath()));<br />        indexWriter.addDocument(document);<br />      }<br />    }<br /><br />    indexWriter.optimize();<br />    indexWriter.close();<br />    long endTime = new Date().getTime();<br /><br />    System.out.println(&quot;MergeFactor: &quot; + indexWriter.mergeFactor);<br />    System.out.println(&quot;MinMergeDocs: &quot; + indexWriter.minMergeDocs);<br />    System.out.println(&quot;MaxMergeDocs: &quot; + indexWriter.maxMergeDocs);<br />    System.out.println(&quot;Document number: &quot; + textFiles.length);<br />    System.out.println(&quot;Time consumed: &quot; + (endTime - startTime) + &quot; milliseconds&quot;);<br />  }<br />}<br /></pre>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br />
            <p>通过这个例子，我们注意到在调整缓冲区的大小以及写磁盘的频率上面 Lucene 给我们提供了非常大的灵活性。现在我们来看一下代码中的关键语句。如下的代码首先创建了类 IndexWriter 的一个实例，然后对它的三个参数进行赋值。</p>
            <br />
            <table cellspacing="0" border="0" cellpadding="0" width="100%">
                <tbody>
                    <tr>
                        <td class="code-outline">
                        <pre class="displaycode">int mergeFactor = 10;<br />int minMergeDocs = 10;<br />int maxMergeDocs = Integer.MAX_VALUE;<br />IndexWriter indexWriter = new IndexWriter(indexDir,luceneAnalyzer,true);        <br />indexWriter.mergeFactor = mergeFactor;<br />indexWriter.minMergeDocs = minMergeDocs;<br />indexWriter.maxMergeDocs = maxMergeDocs;<br /></pre>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br />
            <p>下面我们来看一下这三个参数取不同的值对索引时间的影响，注意参数值的不同和索引之间的关系。我们为这个实验准备了 10000 个测试文档。表 1 显示了测试结果。</p>
            <br />
            <a name="N10131"><strong>表1：测试结果</strong></a><br />
            <img src="http://www.ibm.com/developerworks/cn/java/wa-lucene/images/table1.gif" border="0" height="199" alt="表1：测试结果" width="502" /> <br />
            <p>通过表 1，你可以清楚地看到三个参数对索引时间的影响。在实践中，你会经常的改变合并因子和最小合并文档数的值来提高索引性能。只要你有足够大的内存，你可以为 合并因子和最小合并文档数这两个参数赋尽量大的值以提高索引效率，另外我们一般无需更改最大合并文档数这个参数的值，因为系统已经默认将它设置成了最大。</p>
            <br />
            <table cellspacing="0" border="0" cellpadding="0" width="100%">
                <tbody>
                    <tr>
                        <td><img src="http://www.ibm.com/i/v14/rules/blue_rule.gif" height="1" alt="" width="100%" /><br />
                        <img src="http://www.ibm.com/i/c.gif" border="0" height="6" alt="" width="8" /></td>
                    </tr>
                </tbody>
            </table>
            <table class="no-print" cellspacing="0" align="right" cellpadding="0">
                <tbody>
                    <tr align="right">
                        <td><img src="http://www.ibm.com/i/c.gif" height="4" alt="" width="100%" /><br />
                        <table cellspacing="0" border="0" cellpadding="0">
                            <tbody>
                                <tr>
                                    <td valign="middle"><img src="http://www.ibm.com/i/v14/icons/u_bold.gif" border="0" height="16" alt="" width="16" /><br />
                                    </td>
                                    <td align="right" valign="top"><a href="http://www.ibm.com/developerworks/cn/java/wa-lucene/#main" class="fbox"><strong>回页首</strong></a></td>
                                </tr>
                            </tbody>
                        </table>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br />
            <br />
            <p><a name="N10144"><span class="atitle">Lucene 索引文件结构分析</span></a></p>
            <p>在分析 Lucene 的索引文件结构之前，我们先要理解反向索引（Inverted index）这个概念，反向索引是一种以索引项为中心来组织文档的方式，每个索引项指向一个文档序列，这个序列中的文档都包含该索引项。相反，在正向索引 中，文档占据了中心的位置，每个文档指向了一个它所包含的索引项的序列。你可以利用反向索引轻松的找到那些文档包含了特定的索引项。Lucene正是使用 了反向索引作为其基本的索引结构。</p>
            <br />
            <table cellspacing="0" border="0" cellpadding="0" width="100%">
                <tbody>
                    <tr>
                        <td><img src="http://www.ibm.com/i/v14/rules/blue_rule.gif" height="1" alt="" width="100%" /><br />
                        <img src="http://www.ibm.com/i/c.gif" border="0" height="6" alt="" width="8" /></td>
                    </tr>
                </tbody>
            </table>
            <table class="no-print" cellspacing="0" align="right" cellpadding="0">
                <tbody>
                    <tr align="right">
                        <td><img src="http://www.ibm.com/i/c.gif" height="4" alt="" width="100%" /><br />
                        <table cellspacing="0" border="0" cellpadding="0">
                            <tbody>
                                <tr>
                                    <td valign="middle"><img src="http://www.ibm.com/i/v14/icons/u_bold.gif" border="0" height="16" alt="" width="16" /><br />
                                    </td>
                                    <td align="right" valign="top"><a href="http://www.ibm.com/developerworks/cn/java/wa-lucene/#main" class="fbox"><strong>回页首</strong></a></td>
                                </tr>
                            </tbody>
                        </table>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br />
            <br />
            <p><a name="N1014D"><span class="atitle">索引文件的逻辑视图</span></a></p>
            <p> 在Lucene 中有索引块的概念，每个索引块包含了一定数目的文档。我们能够对单独的索引块进行检索。图 2 显示了 Lucene 索引结构的逻辑视图。索引块的个数由索引的文档的总数以及每个索引块所能包含的最大文档数来决定。</p>
            <br />
            <a name="N10158"><strong>图2：索引文件的逻辑视图</strong></a><br />
            <img src="http://www.ibm.com/developerworks/cn/java/wa-lucene/images/image004.jpg" border="0" height="415" alt="图2：索引文件的逻辑视图" width="467" /> <br />
            <br />
            <table cellspacing="0" border="0" cellpadding="0" width="100%">
                <tbody>
                    <tr>
                        <td><img src="http://www.ibm.com/i/v14/rules/blue_rule.gif" height="1" alt="" width="100%" /><br />
                        <img src="http://www.ibm.com/i/c.gif" border="0" height="6" alt="" width="8" /></td>
                    </tr>
                </tbody>
            </table>
            <table class="no-print" cellspacing="0" align="right" cellpadding="0">
                <tbody>
                    <tr align="right">
                        <td><img src="http://www.ibm.com/i/c.gif" height="4" alt="" width="100%" /><br />
                        <table cellspacing="0" border="0" cellpadding="0">
                            <tbody>
                                <tr>
                                    <td valign="middle"><img src="http://www.ibm.com/i/v14/icons/u_bold.gif" border="0" height="16" alt="" width="16" /><br />
                                    </td>
                                    <td align="right" valign="top"><a href="http://www.ibm.com/developerworks/cn/java/wa-lucene/#main" class="fbox"><strong>回页首</strong></a></td>
                                </tr>
                            </tbody>
                        </table>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br />
            <br />
            <p><a name="N10168"><span class="atitle">Lucene 中的关键索引文件</span></a></p>
            <p>下面的部分将会分析Lucene中的主要的索引文件，可能分析有些索引文件的时候没有包含文件的所有的字段，但不会影响到对索引文件的理解。</p>
            <p>1．索引块文件</p>
            <p>这个文件包含了索引中的索引块信息，这个文件包含了每个索引块的名字以及大小等信息。表 2 显示了这个文件的结构信息。</p>
            <br />
            <a name="N10179"><strong>表2：索引块文件结构</strong></a><br />
            <img src="http://www.ibm.com/developerworks/cn/java/wa-lucene/images/table2.gif" border="0" height="198" alt="表2：索引块文件结构" width="568" /> <br />
            <p>2．域信息文件</p>
            <p>我们知道，索引中的文档由一个或者多个域组成，这个文件包含了每个索引块中的域的信息。表 3 显示了这个文件的结构。</p>
            <br />
            <a name="N10191"><strong>表3：域信息文件结构</strong></a><br />
            <img src="http://www.ibm.com/developerworks/cn/java/wa-lucene/images/table3.gif" border="0" height="179" alt="表3：域信息文件结构" width="567" /> <br />
            <p>3．索引项信息文件</p>
            <p>这是索引文件里面最核心的一个文件，它存储了所有的索引项的值以及相关信息，并且以索引项来排序。表 4 显示了这个文件的结构。</p>
            <br />
            <a name="N101A9"><strong>表4：索引项信息文件结构</strong></a><br />
            <img src="http://www.ibm.com/developerworks/cn/java/wa-lucene/images/table4.gif" border="0" height="252" alt="表4：索引项信息文件结构" width="568" /> <br />
            <p>4．频率文件</p>
            <p>这个文件包含了包含索引项的文档的列表，以及索引项在每个文档中出现的频率信息。如果Lucene在索引项信息文件中发现有索引项和搜索词相匹配。 那么 Lucene 就会在频率文件中找有哪些文件包含了该索引项。表5显示了这个文件的一个大致的结构，并没有包含这个文件的所有字段。</p>
            <br />
            <a name="N101C1"><strong>表5：频率文件的结构</strong></a><br />
            <img src="http://www.ibm.com/developerworks/cn/java/wa-lucene/images/table5.gif" border="0" height="124" alt="表5：频率文件的结构" width="567" /> <br />
            <p>5．位置文件</p>
            <p>这个文件包含了索引项在每个文档中出现的位置信息，你可以利用这些信息来参与对索引结果的排序。表 6 显示了这个文件的结构</p>
            <br />
            <a name="N101D9"><strong>表6：位置文件的结构</strong></a><br />
            <img src="http://www.ibm.com/developerworks/cn/java/wa-lucene/images/table6.gif" border="0" height="69" alt="表6：位置文件的结构" width="568" /> <br />
            <p>到目前为止我们介绍了 Lucene 中的主要的索引文件结构，希望能对你理解 Lucene 的物理的存储结构有所帮助。</p>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
zz from http://www.ibm.com/developerworks/cn/java/wa-lucene/<br />
          <br/>
          <span style="color:red;">
            <a href="http://imjl.javaeye.com/blog/54962#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 21 Feb 2007 11:43:13 +0800</pubDate>
        <link>http://imjl.javaeye.com/blog/54962</link>
        <guid>http://imjl.javaeye.com/blog/54962</guid>
      </item>
      <item>
        <title>[zz]lucene index 包分析</title>
        <author>imjl</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imjl.javaeye.com">imjl</a>&nbsp;
          链接：<a href="http://imjl.javaeye.com/blog/54961" style="color:red;">http://imjl.javaeye.com/blog/54961</a>&nbsp;
          发表时间: 2007年02月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Index包分析<br />
<br />
转载自http://www.gamvan.com/club/clubPage.jsp?ccStyle=0&amp;tID=10633&amp;ccID=37<br />
<br />
Lucene索引中有几个最基础的概念,索引(index),文档(document),域(field),和项(或者译为语词term)<br />
<br />
其中Index为Document的序列&nbsp;&nbsp;&nbsp;Document为Field的序列&nbsp;&nbsp;Field为Term的序列<br />
<br />
Term就是一个子串.存在于不同的Field中的同一个子串被认为是不同的Term.因此Term实际上是用一对子串表示的,第一个子串为Field的name,第二个为Field中的子串.既然Term这么重要,我们先来认识一下Term.<br />
<br />
认识Term最好的方法就是看其源码表示.<br />
public&nbsp;final&nbsp;class&nbsp;Term&nbsp;implements&nbsp;Comparable,&nbsp;java.io.Serializable&nbsp;{<br />
&nbsp;&nbsp;String&nbsp;field;<br />
&nbsp;&nbsp;String&nbsp;text;<br />
&nbsp;&nbsp;public&nbsp;Term(String&nbsp;fld,&nbsp;String&nbsp;txt)&nbsp;{this(fld,&nbsp;txt,&nbsp;true);}<br />
&nbsp;&nbsp;public&nbsp;final&nbsp;String&nbsp;field()&nbsp;{&nbsp;return&nbsp;field;&nbsp;}<br />
&nbsp;&nbsp;public&nbsp;final&nbsp;String&nbsp;text()&nbsp;{&nbsp;return&nbsp;text;&nbsp;}<br />
&nbsp;&nbsp;//overwrite&nbsp;equals()<br />
&nbsp;&nbsp;public&nbsp;final&nbsp;boolean&nbsp;equals(Object&nbsp;o)&nbsp;{&nbsp;}<br />
&nbsp;&nbsp;//overwrite&nbsp;hashCode()<br />
&nbsp;&nbsp;public&nbsp;final&nbsp;int&nbsp;hashCode()&nbsp;{r<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;field.hashCode()&nbsp;+&nbsp;text.hashCode();<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;public&nbsp;int&nbsp;compareTo(Object&nbsp;other)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;compareTo((Term)other);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;public&nbsp;final&nbsp;int&nbsp;compareTo(Term&nbsp;other)<br />
&nbsp;&nbsp;final&nbsp;void&nbsp;set(String&nbsp;fld,&nbsp;String&nbsp;txt)&nbsp;&nbsp;public&nbsp;final&nbsp;String&nbsp;toString()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;field&nbsp;+&nbsp;&quot;:&quot;&nbsp;+&nbsp;text;&nbsp;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;private&nbsp;void&nbsp;readObject(java.io.ObjectInputStream&nbsp;in){<br />
<br />
&nbsp;&nbsp;}<br />
从代码中我们可以大体看出Tern其实是一个二元组
          <br/>
          <span style="color:red;">
            <a href="http://imjl.javaeye.com/blog/54961#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 21 Feb 2007 11:40:23 +0800</pubDate>
        <link>http://imjl.javaeye.com/blog/54961</link>
        <guid>http://imjl.javaeye.com/blog/54961</guid>
      </item>
      <item>
        <title>全文检索分词顺序 </title>
        <author>imjl</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imjl.javaeye.com">imjl</a>&nbsp;
          链接：<a href="http://imjl.javaeye.com/blog/51421" style="color:red;">http://imjl.javaeye.com/blog/51421</a>&nbsp;
          发表时间: 2007年01月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          索引 <br />
1： 空格，，whitespaceTokenize<br />
2： 过滤词，，，StopFilter<br />
3： 拆字，，，，WordDelimiterFilter<br />
4： 小写过滤 ，，，LowerCaseFilter<br />
5： 英文相近词，，，EnglishPorterFilter<br />
6： 去除重复词，，，RemoveDuplicatesTokenFilter<br />
<br />
查询<br />
1： 查询相近词<br />
2： 过滤词<br />
3： 拆字<br />
4： 小写过滤<br />
5： 英文相近词<br />
6： 去除重复词<br />
<br />
<br />
<br />
<strong>以上是针对英文等用空格分开词语的，，，中文的除了空格，，其他都类似</strong>。
          <br/>
          <span style="color:red;">
            <a href="http://imjl.javaeye.com/blog/51421#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 31 Jan 2007 12:18:00 +0800</pubDate>
        <link>http://imjl.javaeye.com/blog/51421</link>
        <guid>http://imjl.javaeye.com/blog/51421</guid>
      </item>
      <item>
        <title>［ｚｚ］业内人士教您如何选择IDC</title>
        <author>imjl</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://imjl.javaeye.com">imjl</a>&nbsp;
          链接：<a href="http://imjl.javaeye.com/blog/37662" style="color:red;">http://imjl.javaeye.com/blog/37662</a>&nbsp;
          发表时间: 2006年12月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <table cellspacing="0" border="0" cellpadding="0" width="100%">
    <tbody>
        <tr>
            <td style="background-image: url(themes/deepblue/grad.gif); background-repeat: repeat-x;" bgcolor="#ffffff" width="100%">&nbsp;</td>
        </tr>
        <tr>
            <td style="background-image: url(themes/deepblue/grad.gif); background-repeat: repeat-x;" colspan="2" bgcolor="#ffffff">原文连接：http://www.cnbeta.com/modules.php?name=News&amp;file=article&amp;mode=flat&amp;sid=19012<br />
            <table border="0" align="center" width="100%">
                <tbody>
                    <tr>
                        <td> <a href="http://www.cnbeta.com/modules.php?name=News&amp;new_topic=311"><img src="http://www.cnbeta.com/images/topics/0047.png" border="0" align="right" alt="cnBeta 博文精选" /></a><font class="content"><strong><br />
                        感谢<a href="http://www.wretch.cc/blog/ChinaYunet" target="_blank">凌宇</a>原创投递,文章很真实,具有参考价值:</strong><br />
                        我 来谈谈该如何选择服务器托管及空间商的问题吧,这个我说话还是比较有权威的.经常比较回忆性的去下Chinaz,csdn,金光,K666,龙联等那些都 是我最早去的一些站长类网站,所以比较难忘,也是自己本来就单调的网络生活唯一的乐趣了.到了里面看看,下意识的关注了一下服务器租用托管,空间租用等等 版块无非都是一些购买空间了,租用服务器了,还有等等各大公司代理商们的广告帖..想起自己以前的角色.<br />
                        <strong>曾经也是里面一个需要购买,到处寻觅的人,到后来成为了一个别人来找我买,自己到处发广告的人.</strong><br />
                        <br />
                        想想,一晃眼,也几年过去了..<br />
                        不能说对IDC行业了解的非常透彻吧,至少在国内比我做的早的也能数出来了..<br />
                        中国比较大的几家网络服务商,也就是新网信海,新网互联,万网,中国频道,商务中国了<br />
                        稍微次点的也就是中资源,通联无限,E动,等等公司了.有好多都想不起来了..<br />
                        通联无限在今年初的时候,因为一些不为人知的事情,公司后来解散了,所有客户都转到万网去了.<br />
                        <br />
                        哎,变化大啊,.<br />
                        <br />
                        还记得微诺互联以前在网上的知名度和好评度也是非常巨大的,主站日IP曾一度维持在一万IP左右..<br />
                        只能怪自己,亲手成就了一家很有前景的公司,也亲手毁灭了他..<br />
                        <br />
                        今天,依然是一个销售人员大发广告,购买人员无头寻觅的日子..<br />
                        <br />
                        有很多自以为很了解IDC的枪手,也写了很多譬如,任何选择空间了，如何选择服务器托管了,之类的帖子.<br />
                        很大一部分都被评为精华了,其他的也获得了很多需要购买朋友们的大力支持...<br />
                        其实不然...<br />
                        很大一部分,一没参考依据,二没市场调查,有的甚至完全是推广自己...<br />
                        <br />
                        我也来谈谈吧,但是不是为了推销自己,也不是为了其他什么,完全一个自己经验之谈而已.<br />
                        <br />
                        首先先说说如何购买空间吧<br />
                        现在已经跟以前不一样了,到处都可以找到<br />
                        1G webspace<br />
                        asp/access/php/mysql<br />
                        IIS:无限<br />
                        CPU:无限<br />
                        强大的管理平台<br />
                        无限个域名绑定<br />
                        <br />
                        100元甚至100元内就可买到....<br />
                        <br />
                        想当年,这样的配置类型的空间,可以卖到至少1K以上...<br />
                        <br />
                        可能是因为服务器托管价格的降低,还有就是硬件配置的降低的原因..<br />
                        其实,更多的因素,也只能说是会搞IDC的人越来越多了,已经没多少技术性可言,甚至自己租台服务器<br />
                        就可以放个WEB,开始做IDC了...<br />
                        <br />
                        现在的空间租用行业,已经完全混乱了,市场的泛滥,导致价格的降低,带来的只能是用户的痛苦.<br />
                        <br />
                        试想一下,一台标准配置的虚拟主机服务器的成本<br />
                        XEON 3.0G *2<br />
                        1G ECC OR 2GECC<br />
                        73GSCSI OR 160G SATA<br />
                        1U OR 2U<br />
                        <br />
                        这样的硬件配置,应该算是不错的,,也正是那些100元同志们所宣传的自己标准配置..<br />
                        <br />
                        光是这个硬件成本,配下来,按中关忖最新的价格来算,也至少得8000元RMB了.<br />
                        <br />
                        现在多半是托管在双线机房,也有些是托管在单线的机房,100元同志们都宣称自己的服务器是百兆独享<br />
                        那好,按中网科技(CHINANET.CC)所标的100M独享托管价格:1W来算的话,一共是1.8W..<br />
                        但是,中网科技的100M独享却不是真正的100M,说句实在话,你能跑到15M/SEC,就该庆幸了..<br />
                        真正的100MBIT端口的价格,电信官方报价在80W左右/年..就算你代理价格,也至少得20W吧?<br />
                        <br />
                        这个就不说了，你可以有很多理由,说自己的渠道有多好,拿的价格有多低,那么好,我们就按1W来算?<br />
                        <br />
                        上面所说的,一共是1.8W人民币<br />
                        100元同志,你要卖180个这样的套餐空间,你才能把自己的成本给赚回来..<br />
                        这个也不算你自己的基本开销了,也不算你的人员工资了,更不算你的辛苦广告费了..<br />
                        <br />
                        就这样算吧,你可以不吃不喝,不开人员公司,广告也是自己发的,不需要一分额外的钱出帐.<br />
                        那么好,你这台服务器确定要放180个站? 180个这样套餐的站点,你是否知道是个什么概念?<br />
                        按每个站每天的日IP 500来算吧, 其实我是算的很少了,因为你那样的配置,对于现在的站长来说<br />
                        少少1WIP不是一点问题..<br />
                        500*180 将近每天有6W个IP... 100元同志,你的IIS是没有限制数量的,<br />
                        众所周知.,每台服务器极限的IIS量也就4000-6000左右,平分一下,一个站的IIS是多少?200左右..<br />
                        <br />
                        各位需要购买的朋友们,你觉得200够用吗? 够了就不用说了，不够的呢? 如果这180个网站里面<br />
                        有一半左右的是比较高级点的站长,那么,你这台服务器就按每天满负载的运行,早晚一天也会瘫痪的..<br />
                        <br />
                        忘记了,还有你的软体或硬件防火墙的投资了....现在的DDOS SYN UDP CC等攻击是泛滥的,为什么?<br />
                        技术泛滥了.<br />
                        <br />
                        我说的这些例子都是最基本的,也是现在网上到处流行的...<br />
                        <br />
                        试问一下,需要购买的朋友,你敢买这种空间吗? 你的站点，你的技术支持,你的售后服务<br />
                        能向他们保证的那样承诺给你吗?<br />
                        <br />
                        还有,不知道什么时候,开始流行了合租空间,..合租空间主要是面对于大点的站长..<br />
                        5G 的虚拟主机,每年也就200元了....按照上面的比例...需要购买的朋友,你心里有数了么?<br />
                        <br />
                        现在的中国虚拟主机市场已经泛滥了，如果再这样继续恶意竞争，降低价格甚至不顾及成本.<br />
                        那么带来的就是中国虚拟主机市场的走向灭亡,和越来越多的人在网上公布一个又一个骗子空间商..<br />
                        <br />
                        这是我自己之鉴,你可以参考..也可以不用理会..我只能说些我知道的事情而已..<br />
                        <br />
                        下面是服务器租用,托管方面的..<br />
                        <br />
                        以前的时候,服务器租用托管等,还都是两大ISP, 电信和网通<br />
                        主要也都是托管在这两条线上<br />
                        但是,越来越多的,例如铁通,移动,联通等代理商们也参与了服务器租用托管的大潮流中...<br />
                        <br />
                        记得今年初的时候,.又流行起来了双线(电信,网通)的服务器托管租用,甚至还有三线,四线的托管...<br />
                        <br />
                        因为越来越多的站长了解了虚拟主机市场的寒心后,慢慢觉得自己租或托管台服务器又经济,又划算,而且还省心<br />
                        其实,这个也是的,毕竟什么都是自己的,省得被骗了..<br />
                        <br />
                        双线,三线,四线等托管商们的出现,也是必然的.因为中国互联网南北不互通的问题,.<br />
                        导致越来越多的站长们选择了把自己的服务器放在这样的机房内..<br />
                        <br />
                        单线托管我就不说了,也没什么好谈的,时代快过去了..<br />
                        我来说下双线,多线的服务器租用托管吧..<br />
                        <br />
                        先讲一下双线,多线的服务器租用托管的格局.<br />
                        <br />
                        <strong>一、铁通（移动、联通）：有很多朋友把服务器托管在铁通（移动、联通）</strong><br />
                        <br />
                        其实把服务器放在铁通差不多是寻求电信用户和网通用户的折中办法，比如把服务器放在电信，<br />
                        电信用户打开网站需要1秒，网通用户需要5秒，而现在放在铁通的话，<br />
                        可能电信和网通用户访问都是3秒，这个其实就牵涉到一般客户愿意容忍的等待时间，<br />
                        比如一般的人容忍一个网站打开是4秒钟，那放在铁通就是一个很不错的解决方案，<br />
                        这样电信用户和网通用户都能容忍。但比如要是服务器是用做视频教学类的话，<br />
                        那这种这种办法就不是很好了，这样会使得电信和网通用户访问速度都慢。<br />
                        放在铁通，一般价格比较便宜（相对真正的双线路机房来说），<br />
                        如果朋友们主要是做WEB，会员对速度也不是要求特别高的时候，那你选择铁通是个不错的方案。<br />
                        <br />
                        <strong>二、双线路双IP托管</strong><br />
                        <br />
                        这种情况又可根据是否拥有2条公网出口进行细分：<br />
                        1、拥有2条公网出口：这样的双线路双IP托管效果比较好，<br />
                        不过相对来说托管价格比较高，而且带宽资源也是比较昂贵的，<br />
                        这种机房资源非常稀缺，目前在全国拥有2个公网出口的双线路机房只有一个，<br />
                        因为广电总局后面不让电信和网通搞双线路机房，觉得这样对电信和网通的业务打击非常大，<br />
                        不利于电信和网通的发展，现在唯一拥有公网出口的双线路机房是因为2000年就已经申请好了，不好撤消，<br />
                        后面申请的都没有批准。<br />
                        2、没有自己的公网出口：这样的托管商一般是从电信拉条100M独享光纤，<br />
                        网通拉条100M独享光纤，再分别买一些IP过来，这种现在差不多是市面上见得最多的双线路，<br />
                        而且一般这样的代理商技术和设备不是很过关，需要通过双网卡设置双IP，<br />
                        而拥有公网出口的机房，设备和技术力量都还不错，都是通过单网卡绑定双IP的。<br />
                        其实这种模式还有一个最大的特点就是100M独享光纤其实是和运营商的交换机之间的连接是100M<br />
                        （也可以理解成是城域网上的100M独），而不是公网出口上的100M独，<br />
                        估计一般的省会城市100M独享光纤一般在公网出口上能分到20M左右就不错了，<br />
                        这个要根据该城市的总体带宽资源来看的，要是该城市带宽资源非常宽松，<br />
                        有可能这种城域网上的100M独享在公网出口上也可以跑很高。<br />
                        3、拥有一个公网出口：其实这种模式的代理商都没有自己的小机房，<br />
                        他是通过在电信租柜子做生意，后面再在网通托管一台机器，买一段IP，做代理服务器，<br />
                        这样做后也可以帮客户在服务器上设置2个IP，但这样通过代理服务器走网通线路解析速度比较慢，<br />
                        网络访问速度更慢，所以这种效果不是很好，朋友们在选择双线路的时候尽量不要选择这样的双线路托管。<br />
                        <br />
                        <strong>三、双线路单IP托管</strong><br />
                        <br />
                        1、有公网出口：这样的托管商是本来就有这么好的资源，<br />
                        比如电信通，他们这个效果比较好，而且是单IP实现，<br />
                        但这样的资源也是非常稀缺，一般的托管商是没办法搞到这样的资源的<br />
                        还有就是宇网所在的郑州景安数据中心,利用的是BGP技术来实现的，但是稳定性实在另人失望.<br />
                        <br />
                        2、没有公网出口：也就是从电信和网通拉光纤出来，后面自己通过设备对路由进行设置，<br />
                        也是给用户分配一个IP，来实现双线路，不过暂时在市面上还没有看到效果非常好，名气做得不错的，<br />
                        可能是因为没有公网出口，还有就是设备不够先进等原因吧。<br />
                        <br />
                        了解了这些知识,我来谈下该如何选择吧<br />
                        <br />
                        首先说一下双线双IP的托管.<br />
                        目前凌宇个人认为比较好的有几家<br />
                        天津IBM双线机房(IBM建的机房,技术和环境设施很好,稳定性也很好,但是却不能放SF,带宽分配的也很少<br />
                        每台机器限制的带宽是2M上行)<br />
                        杭州世导机房<br />
                        其实杭州世导做的就比较早点,据说老板是个老外哈,他们的优点是稳定,技术方面,但是价格贵,带宽更少<br />
                        据我一台在世导的机器上做的测试,每台服务器的上行和下行的带宽很难突破500K/SEC....<br />
                        <br />
                        其他的例如还有亿恩科技的江西三线机房(实际只是铁通和电信而已)<br />
                        <br />
                        还有就是双线单IP了<br />
                        双线单IP,现在做的可能就只有郑州景安数据中心了,他们的优点是带宽足,价格相对便宜,<br />
                        但是唯一让人头疼的是他们的服务,还有他们的技术支持...实在另人不敢恭维..<br />
                        <br />
                        如果是单线托管方面,建议不要选择上海了,<br />
                        虽然上海的机房环境和各方面都是中国可以说是最好的机房所在地.<br />
                        但是包括在张江,外高桥,武胜等等大机房都基本饱满了..<br />
                        上海已经拖了太多的服务器 ,现在在放服务器过去,已经没有太好的带宽给你了..<br />
                        <br />
                        电信方面,可以选择江苏扬州 苏州 泰洲等,浙江杭州 温州 金华等,河南(222.89段),广东,四川等地区.<br />
                        网通方面,可以选择浙江网通,深圳网通(带宽少),北京网通(带宽少,价格高),河南网通,山东网通等.<br />
                        <br />
                        铁通方面,我推荐河南铁通(开封),河北铁通(保定),其他地区也可以参考一下..<br />
                        <br />
                        联通就免了,他的稳定和互通性实在另人实望,移动还可以,可以选择重庆移动..<br />
                        <br />
                        北京这个地方,带宽都不太足了,而且普遍价格很高,就是技术好,稳定性不错,防攻击能力也很强<br />
                        还有一个防攻击能力比较好的机房,基本都在重庆,四川等地,上海那边也不错,但是带款不够<br />
                        防火墙再好也没用...<br />
                        <br />
                        打了那么多字,只是希望在寻觅的朋友们,能有个好的选择方案...货比三家,好好选择吧.<br />
                        <br />
                        凌宇先祝大家能选择另自己满意的IDC...呵呵,闪了..</font></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
          <br/>
          <span style="color:red;">
            <a href="http://imjl.javaeye.com/blog/37662#com