有時對于一個Document來說,有一些Field會被頻繁地操作,而另一些Field則不會。這時可以將頻繁操作的Field和其他Field分開存放,而在搜索時同時檢索這兩部分Field而提取出一個完整的Document。
這要求兩個索引包含的Document的數(shù)量必須相同。
在創(chuàng)建索引的時候,可以同時創(chuàng)建多個IndexWriter,將一個Document根據(jù)需要拆分成多個包含部分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);
之后的操作和一般的搜索相同。
在創(chuàng)建索引的時候可以根據(jù)分類需要創(chuàng)建多個索引,而在搜索時可以同時搜索所有的索引。
這一功能通過MultiSearcher實現(xiàn)。
IndexSearcher[] searchers=new IndexSearcher[]{new IndexSearcher(dir1),new IndexSearcher(dir2)};
MultiSearcher msearcher=new MultiSearcher(searchers);