lucene 多索引目录搜索实现方法
生活随笔
收集整理的這篇文章主要介紹了
lucene 多索引目录搜索实现方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
http://akululu.iteye.com/blog/314130
多索引目錄就是要在多個索引目錄的中進行比較搜索,類似概念在SQL中就是select * from TableA union select * from TableB。
IndexSearcher[] searchers = new IndexSearcher[2];
searchers[0] = new IndexSearcher(IndexPath0);
searchers[1] = new IndexSearcher(IndexPath1);
方法a
MultiSearcher multisearcher = new MultiSearcher(searchers);
TopDocs multitopdocs = multisearcher.Search(query, null, 1000);
這個搜索的結果可能有相同的信息,比如你有一條相同的信息在多個目錄中索引,搜索的結果就會出現多次相同的信息。
方法b
還有一種搜索方式是用到ParallelMultiSearcher這個對象,它是從MulitSearcher繼承而來。
ParallelMultiSearcher parallelmultisearcher = new ParallelMultiSearcher(searchers);
TopDocs paralleltopdocs = parallelmultisearcher.Search(query, null, 1000);
這個搜索是對搜索后的結果進行合并,剔除重復的信息。 方法c 初始化多個IndexRader,一個目錄就是一個IndexReader,最后整合成一個IndexReader數組,實例化IndexSearcher時傳入他 List<IndexReader> allIndexReaderList = new ArrayList<IndexReader>();
for (String filePath : indexFilePathList) {
???? File indexDirFile = new File(filePath);
???? if (indexDirFile.exists()) {
????????? Directory indexDir = FSDirectory.open(indexDirFile);
????????? IndexReader indexReader = IndexReader.open(indexDir, true);
????????? allIndexReaderList.add(indexReader);
???? }
}
IndexReader[] fileIndexReaderArr = allIndexReaderList.toArray(new IndexReader[0]);
MultiReader multiReader = new MultiReader(fileIndexReaderArr, true);
IndexSearcher indexSearcher = new IndexSearcher(multiReader);
多索引目錄就是要在多個索引目錄的中進行比較搜索,類似概念在SQL中就是select * from TableA union select * from TableB。
IndexSearcher[] searchers = new IndexSearcher[2];
searchers[0] = new IndexSearcher(IndexPath0);
searchers[1] = new IndexSearcher(IndexPath1);
方法a
MultiSearcher multisearcher = new MultiSearcher(searchers);
TopDocs multitopdocs = multisearcher.Search(query, null, 1000);
這個搜索的結果可能有相同的信息,比如你有一條相同的信息在多個目錄中索引,搜索的結果就會出現多次相同的信息。
方法b
還有一種搜索方式是用到ParallelMultiSearcher這個對象,它是從MulitSearcher繼承而來。
ParallelMultiSearcher parallelmultisearcher = new ParallelMultiSearcher(searchers);
TopDocs paralleltopdocs = parallelmultisearcher.Search(query, null, 1000);
這個搜索是對搜索后的結果進行合并,剔除重復的信息。 方法c 初始化多個IndexRader,一個目錄就是一個IndexReader,最后整合成一個IndexReader數組,實例化IndexSearcher時傳入他 List<IndexReader> allIndexReaderList = new ArrayList<IndexReader>();
for (String filePath : indexFilePathList) {
???? File indexDirFile = new File(filePath);
???? if (indexDirFile.exists()) {
????????? Directory indexDir = FSDirectory.open(indexDirFile);
????????? IndexReader indexReader = IndexReader.open(indexDir, true);
????????? allIndexReaderList.add(indexReader);
???? }
}
IndexReader[] fileIndexReaderArr = allIndexReaderList.toArray(new IndexReader[0]);
MultiReader multiReader = new MultiReader(fileIndexReaderArr, true);
IndexSearcher indexSearcher = new IndexSearcher(multiReader);
轉載于:https://www.cnblogs.com/svennee/p/4080619.html
總結
以上是生活随笔為你收集整理的lucene 多索引目录搜索实现方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL Server 数据库文件管理
- 下一篇: z-index优先级总结