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);
  • 相关阅读:
    看雪-课程-加密与解密基础
    Windows API-Wininet&WinHTTP
    OS-Windows-bat-不等待当前命令返回继续执行后续指令
    Code-OPC DA- OPC Client Code Demo
    OS-Windows-Close Windows Error Reporting
    C-长度修饰符
    Code-Linux-time_t
    Windows-bat-Path
    Code-C++-CTime&ColeDateTime
    c++命名规范、代码规范和参数设置
  • 原文地址:https://www.cnblogs.com/svennee/p/4080619.html
Copyright © 2011-2022 走看看