日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

lucene 多索引目录搜索实现方法

發布時間:2025/3/15 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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);

轉載于:https://www.cnblogs.com/svennee/p/4080619.html

總結

以上是生活随笔為你收集整理的lucene 多索引目录搜索实现方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。