zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    可复用的自定义Adapter
    SharedPreference工具类
    MD5工具类
    面试题
    策略模式
    java画图之初体验
    接口与事件之图形界面的认证登录
    “奥特曼“与”小怪兽”的继承者们之战
    “奥特曼攻打小怪兽”java学习打怪升级第一步
    使用智能指针管理对象资源
  • 原文地址:https://www.cnblogs.com/svennee/p/4080619.html
Copyright © 2011-2022 走看看