Field.Store.YES, Field.Index.NOT_ANALYZED
为了体会Field.Store.YES与Field.Store.NO的区别:可以看到只要ANALYZED就会建索引,建了索引就能查。Store的目的是通过全文检查就能返回对应的内容。这就是Store在索引中的目的。而不必在通过id去DB中加载。另外,注意到lucene3以上的版本中. ANALYZED就表示分词建索引。1.代码中:
doc.add(new Field(DaoDaoLocation.LocationIndexField.CADDRESS.getIndexName() , sTmp, Field.Store.NO, Field.Index.ANALYZED));2.luke分析:在Term中指定caddress字段查hongxu可以查到结果 3.数据库验证
1236878 Bistro Zhou 10022 0 No.1151 Hongxu Road, Changning District 021-6219-8800(6332) 0 aishiguro 2011-05-28 1:9999:World|2:10000:Asia|294211:10001:China|303764:10009:Shanghai Region|308272:10004:Shanghai 4 0 0 2009-01-14
发现该id对应的Street1属性:No.1151 Hongxu Road, Changning District, Stree1就是Obj里面的caddress属性,这说明了不是只有Field.Store.YES的字段才会被建索引。Store.YES只是为了通过全文检索就能返回。而不必通过DB或其它介质二次加载。