昨天到上海了,上海的天气也是阴沉沉的,今天还下雨了,晚上更新了下自己的简历,明天开始找工作的旅程....
继续lucene.net的学习,这次看的是Field.cs。Field这个类的结构很简单,下面列出了Field的所有字段:
字段 |
含义 |
name |
Field名字 |
fieldsData |
Field的数据类型 |
storeTermVector |
是否存储term向量 |
storeOffsetWithTermVector |
是否存储term向量的偏移量 |
storePositionWithTermVector |
是否存储term向量的位置 |
omitNorms |
(这个暂时我也不明白,这个类结构很简单,但是要理解里面每个字段的意思还是需要多了解lucene的原理,有兴趣的话可以参看《lucene in action》这本书) |
isStored |
是否直接存储 |
isIndexed |
是否进行索引 |
isTokenized |
是进行分词处理 |
isBinary |
是否是二进制流 |
isCompressed |
是否被压缩 |
而Field类中除了重写ToString方法以外,其他都是一些构造函数以及Get和Set方法,代码逻辑也非常简单。Field类中还定义了三个类,Store和Index,TermVector。这三个类都是继承自Parameter类,而Parameter类中使用了个叫typesafe enum pattern的设计模式,其实只是为了实现枚举类型,因为在jdk1.4之前,java中并没有枚举类型。从这里可以看出Lucene.net还是严重地保持着java的印记,包括属性的读写也还是通过GetXXX,SetXXX之类的方法,而不是使用.net中的属性。这个可真是汗- -!!!
下面是lucene.net中Field.cs的源码,这次因为代码结构及逻辑都非常简单,所以没加注释。
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)