lucene 多索引目录搜索实现方法
生活随笔
收集整理的這篇文章主要介紹了
lucene 多索引目录搜索实现方法
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
http://akululu.iteye.com/blog/314130
多索引目錄就是要在多個(gè)索引目錄的中進(jìn)行比較搜索,類似概念在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);
這個(gè)搜索的結(jié)果可能有相同的信息,比如你有一條相同的信息在多個(gè)目錄中索引,搜索的結(jié)果就會(huì)出現(xiàn)多次相同的信息。
方法b
還有一種搜索方式是用到ParallelMultiSearcher這個(gè)對(duì)象,它是從MulitSearcher繼承而來(lái)。
ParallelMultiSearcher parallelmultisearcher = new ParallelMultiSearcher(searchers);
TopDocs paralleltopdocs = parallelmultisearcher.Search(query, null, 1000);
這個(gè)搜索是對(duì)搜索后的結(jié)果進(jìn)行合并,剔除重復(fù)的信息。 方法c 初始化多個(gè)IndexRader,一個(gè)目錄就是一個(gè)IndexReader,最后整合成一個(gè)IndexReader數(shù)組,實(shí)例化IndexSearcher時(shí)傳入他 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);
多索引目錄就是要在多個(gè)索引目錄的中進(jìn)行比較搜索,類似概念在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);
這個(gè)搜索的結(jié)果可能有相同的信息,比如你有一條相同的信息在多個(gè)目錄中索引,搜索的結(jié)果就會(huì)出現(xiàn)多次相同的信息。
方法b
還有一種搜索方式是用到ParallelMultiSearcher這個(gè)對(duì)象,它是從MulitSearcher繼承而來(lái)。
ParallelMultiSearcher parallelmultisearcher = new ParallelMultiSearcher(searchers);
TopDocs paralleltopdocs = parallelmultisearcher.Search(query, null, 1000);
這個(gè)搜索是對(duì)搜索后的結(jié)果進(jìn)行合并,剔除重復(fù)的信息。 方法c 初始化多個(gè)IndexRader,一個(gè)目錄就是一個(gè)IndexReader,最后整合成一個(gè)IndexReader數(shù)組,實(shí)例化IndexSearcher時(shí)傳入他 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);
轉(zhuǎn)載于:https://www.cnblogs.com/svennee/p/4080619.html
總結(jié)
以上是生活随笔為你收集整理的lucene 多索引目录搜索实现方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SQL Server 数据库文件管理
- 下一篇: z-index优先级总结