【发布时间】:2012-07-26 21:33:30
【问题描述】:
我正在尝试实现最简单的 lucene 搜索。我以this为起点。
我能看懂示例代码:
public static void indexHotel(Hotel hotel) throws IOException {
IndexWriter writer = (IndexWriter) getIndexWriter(false);
Document doc = new Document();
doc.add(new Field("id", hotel.getId(), Field.Store.YES,
Field.Index.NO));
doc.add(new Field("name", hotel.getName(), Field.Store.YES,
Field.Index.TOKENIZED));
doc.add(new Field("city", hotel.getCity(), Field.Store.YES,
Field.Index.UN_TOKENIZED));
doc.add(new Field("description", hotel.getDescription(),
Field.Store.YES,
Field.Index.TOKENIZED));
String fullSearchableText = hotel.getName() + " " + hotel.getCity() + " " + hotel.getDescription();
doc.add(new Field("content", fullSearchableText,
Field.Store.NO,
Field.Index.TOKENIZED));
writer.addDocument(doc);
}
我在这段代码中无法理解的是 getIndexWriter(false) 做了什么。我关注的帖子中没有提到这种方法。此外在另一个代码块中:
public void rebuildIndexes() throws IOException {
//
// Erase existing index
//
getIndexWriter(true);
//
// Index all hotel entries
//
Hotel[] hotels = HotelDatabase.getHotels();
for(Hotel hotel: hotels) {
indexHotel(hotel);
}
//
// Don’t forget to close the index writer when done
//
closeIndexWriter();
}
使用了一些未定义的方法。
对于像我这样的初学者来说有点困惑。
我只想创建一个索引。我认为getIndexWriter(true); 和closeIndexWriter() 是一些实用方法,只是为了获得IndexWriter,但我不能对getIndexWriter(true); 中的true 的用途做出任何假设。
通过关注其他一些帖子,我对 IndexWriter 的创建感到更加困惑。
如果我做错了什么,有人可以让我走上正确的道路吗?
【问题讨论】: