Lucene的平行索引

     有時對於一個Document來說,有一些Field會被頻繁地操作,而另一些Field則不會。這時可以將頻繁操作的Field和其他Field分開存放,而在搜索時同時檢索這兩部分Field而提取出一個完整的Document。

     這要求兩個索引包含的Document的數量必須相同。

     在創建索引的時候,可以同時創建多個IndexWriter,將一個Document根據需要拆分成多個包含部分Field的Document,並將這些Document分別添加到不同的索引。

    而在搜索時,則必須藉助ParallelReader類來整合。

    Directory dir1=FSDirectory.getDirectory(new File(INDEX_DIR1),false);
    Directory dir2=FSDirectory.getDirectory(new File(INDEX_DIR2),false);
    ParallelReader preader=new ParallelReader();
    preader.add(IndexReader.open(dir1));
    preader.add(IndexReader.open(dir2));

    IndexSearcher searcher=new IndexSearcher(preader);

    之後的操作和一般的搜索相同。

發佈了33 篇原創文章 · 獲贊 0 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章