星期五, 九月 05, 2003

研究了一些项目管理方面的知识.

  最近两天一直在研究管理方面的东西,发现项目管理方面的东西太多了,我的头都弄大了,发现XML的功能简直穿插在各个系统之间,我现在在项目中间使用了maven,把以前的项目都集合在一起.感觉maven的功能很强,不过现在发现apache的forrest不怎么使用了,maven正在蓬勃发展.在sourceforge站点许多都采用了maven.而且还发现maven能够支持eclipse工程,在sourceforge站点还有一个eclipse的 maven plugin .
   其实maven的安装很简单,不过我还是倒腾了半天,主要是因为maven的官方网站上面的参考资料是maven beta-8的,后来发现它的简单和ant差不多,主要是建立 project.xml 以及 maven.xml project.properties文件,但是功能比ant强大了许多.在使用xdoc的时候修改site.jsl,而所有的网站数据都是以xml的格式存放.就可以产生不同风格的站点.真的很不错.现在我的开发采用了eclipse+maven+cvs+ant+junit...呵呵,感觉很爽.

新闻系统的代码经过了美化和优化,书写了详细了的doc,整个系统包含下面几个

  • Front View Control
    采用mvc设计,用来控制系统的访问.
  • Java Common Utility
    包含了一些常用的java包,有JDO,Jibx等常用的处理.
  • Luence Serach System
    Apache的搜索引擎,主要是扩展了XML的搜索功能,针对XML的搜索设计.
  • News System API
    新闻系统的一些API函数,包含了JDO/jibx的处理.

  这两天南京的天气不错,昨天晚上看电视国奥队点球击败了乌拉圭,应用sina的一句话评论:比西亚裁判还黑的裁判.周末来了,球赛又有的看了.最近一周在看天天周星驰很是过瘾.周六去阿姨家大吃一顿,周日在玄武湖公园休闲一把.

星期三, 九月 03, 2003

今天天气非常好。

天气好,心情好,今天终于搞定了lucene,把他捏合在新闻系统里面搜索XML文档,参考了IBM DW上面的一篇文章。

陆姐姐被别人请走了,今天晚上只有何妹妹照顾我了。

luncene这个东西发现面向对象的功能非常强大,看看他的查找功能就知道他的设计精湛,title:"The Right Way" AND text:go 当初我在o/r mapping中很想实现这样的复杂的查找功能。在建立索引的时候这个表格应该是很重要的:

方法 切词 索引 存储 用途
Field.Text(String name, String value) Yes Yes Yes 切分词索引并存储,比如:标题,内容字段
Field.Text(String name, Reader value) Yes Yes No 切分词索引不存储,比如:META信息,
不用于返回显示,但需要进行检索内容
Field.Keyword(String name, String value) No Yes Yes 不切分索引并存储,比如:日期字段
Field.UnIndexed(String name, String value) No No Yes 不索引,只存储,比如:文件路径
Field.UnStored(String name, String value) Yes Yes No 只全文索引,不存储
在建立索引的 时候更新起来很困难。按照offical上面的解释是先删除建立就是update,^_^.而且删除不是很方便,我这里的删除感觉很市别扭:
public static void deleteDocument(String indexPath, String keyId)
        throws LuceneException {
        IndexReader reader = null;

        try {
            reader = IndexReader.open(indexPath);

            for (int i = 0; i < reader.numDocs(); i++) {
                if (reader.isDeleted(i)) {
                    continue;
                }

                Document doc = reader.document(i);

                if (doc.get("objectId").equals(keyId)) {
                    reader.delete(i);

                    break;
                }
            }
        } catch (IOException e) {
            throw new LuceneException(e.getMessage(), e);
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
        }
    }
不过还好。现在基本上完成了对XML文档的搜索功能,下列函数主要是对XML的索引建立起重要作用。
public static void indexDocs(IndexWriter writer, File file)
        throws ParserConfigurationException, SAXException, IOException {
        if (file.isDirectory()) {
            String[] files = file.list();

            for (int i = 0; i < files.length; i++)
                indexDocs(writer, new File(file, files[i]));
        } else {
            System.out.println("adding " + file);

            XMLDocumentHandlerSAX hdlr = new XMLDocumentHandlerSAX(file);
            writer.addDocument(hdlr.getDocument());

            // For DOM, use
            // XMLDocumentHandlerDOM hdlr = new XMLDocumentHandlerDOM();
            // writer.addDocument(hdlr.createXMLDocument(file));
        }
    }
通过修改XMLDocumentHandlerSAX类来实现自己需要的Index. 查找功能:
public static void search(String indexPath, String keyWords) throws LuceneException {
        Searcher searcher = null;

        try {
            searcher = new IndexSearcher(indexPath);

            Analyzer analyzer = new StandardAnalyzer();

            Query query = QueryParser.parse("title:\"" + keyWords + "\"  " +
                    keyWords, "content", analyzer);
            System.out.println("Searching for: " + query.toString());

            Hits hits = searcher.search(query);
            System.out.println(hits.length() + " total matching documents");

            final int HITS_PER_PAGE = 10;

            for (int start = 0; start < hits.length();
                    start += HITS_PER_PAGE) {
                int end = Math.min(hits.length(), start + HITS_PER_PAGE);

                for (int i = start; i < end; i++) {
                    Document doc = hits.doc(i);
                    String name = doc.get("objectId");
                    System.out.println(name);
                    System.out.println(doc.get("author"));
                    System.out.println(doc.get("title"));
                }
            }

           
        } catch (IOException e) {
            throw new LuceneException(e.getMessage(),e);
        } catch (ParseException e) {
			throw new LuceneException(e.getMessage(),e);
		}finally{
			if(searcher!=null){
				try {
					searcher.close();
				} catch (IOException e1) {
				}
			}
		}
    }
几个参考资源 下午要和整个新闻捏合在一块咯。

今天给销售人员讲解域名的知识,自己也好好学习了一下域名的知识。域名的MX/A/CNAME/URL/等等,感觉自己也学习了许多。尤其是自己认识了一个DOS下面的域名工具:nslookup。这个工具我感觉确实很强大的。自己也发现了许多资源。

其实我的感觉就是域名这个东西就是有了一些功能的机器的名字,而这些功能和Domain Name Server密切相关。

今天中午把自己的站点加了一些功能,可以看看右边的天气预报哟,实时体现了南京的天气。还加了一个google的搜索bar. hoho,研究lucene了。

最近的新闻系统中要用到搜索功能。发现lucene功能很强大。研究了半天才略知道他的工作的原理。阿菜落伍了,现在有几个产品好像用到这个东东.

已经有很多Java项目都使用了Lucene作为其后台的全文索引引擎,比较著名的有:



  • Jive:WEB论坛系统;

  • Eyebrows:邮件列表HTML归档/浏览/查询系统,优秀论文“TheLucene
    search engine: Powerful, flexible, and free
    ”作者就是EyeBrows系统的主要开发者之一,而EyeBrows已经成为目前APACHE项目的主要邮件列表归档系统。

  • Cocoon:基于XML的web发布框架,全文检索部分使用了Lucene

  • Eclipse:基于Java的开放开发平台,帮助部分的全文索引使用了Lucene


还有就是cjsmile的新闻也用到了这个东东。

下面有几个资源感觉很不错

星期一, 九月 01, 2003

今天公司开会了。

今天公司开会了,讨论了好多东西,呵呵,感觉很好哟。 晚上回到家,我又收到了我的生日礼物一个playboy的钱包。感觉自己好幸福耶。

阿菜来到南京工作了,顺便记录了阿菜的生活情况。也来当一会博客,当初编码设为utf-8,发现好多人的浏览器在浏览的时候出现了空白,其实就是浏览器编码的问题,只好改为gb2312的了。
阿菜最近在开发一系列产品,用到了一些新兴的技术。jdo/jibx/o-r mapping/xml/xslt等等,有好多阿菜还是一知半解,不过阿菜会努力工作的.