08 2008 档案
摘要:InputStream类有两个子类,RAMInputStream和FSInputStream。 RAMInputStream这个类比较简单,由于父类已经实现了ICloneable接口,这里只是一个形式上的实现。RAMInputStream内聚了一个RAMFile对象。它最复杂的部分,就是重写抽象方法ReadInternal。 代码 2-12 public override void Read...
阅读全文
摘要:InputStream这个类在Java基本类库里就有,但是Lucene选择了自己来实现,翻译到dotnet版本,名称保持没变。
阅读全文
摘要:MakeLock方法在Java代码里是这样的: 代码 1-12 public final Lock makeLock(final String name) { return new Lock() { public boolean obtain() throws IOException { synchronized (files) { ...
阅读全文
摘要:在使用Lucene.Net中,第一个接触的类一般是Directory。它是Lucene存储的一个抽象,由此派生了两个类:FSDirectory和RAMDirectory,用于控制索引文件的存储位置。使用FSDirectory类,就是存储到硬盘;使用RAMDirectory类,则是存储到内存。 图1-1 存储抽象实现UML图 如图1-1,显示了这种关系。而看Lucene代码会发现...
阅读全文
摘要:在使用Lucene的过程中,对Lucene的工作方式产生了越来越浓厚的兴趣。于是尝试阅读其中所有的类,整理其内部结构关系,以期能理解Lucene。由于Lucene.Net是从java版本翻译而来,而且采用的是先用翻译器(就是VS2003能使用的那个),所以,对Lucene原本的代码结构产生一定的破坏,因此,阅读时也参考了Lucene Java版的源码。从目前网上能得到的最老版本1.4.3开始。 ...
阅读全文
摘要:但是用词库的分词,准确性暂且不说,词库的更新,索引就必须跟着改变。这种方式无疑是成本高昂的。那么StandardAnalyzer分词的优点还是有的。是否可以结合这两种分词的优点呢?
阅读全文