我正在尝试实现最简单的 lucene 搜索。我以此为出发点。
我可以理解示例代码:
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
,但我不能对它的用途做出任何true
假设getIndexWriter(true);
。
通过关注其他一些帖子,我对 IndexWriter 的创建感到更加困惑。
如果我做错了什么,有人可以让我走上正确的道路吗?