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);
  • 相关阅读:
    mysql查看所有的数据库
    查看/杀死mysql进程
    PL/SQL 保存页面布局
    Linux 隐藏文件和目录,显示隐藏的文件和目录
    win10插入U盘多显示了一个盘符
    Linux安装rz和sz命令
    PL/SQL链接Oracle出现乱码
    解决Tomcat: Can't load IA 32-bit .dll on a AMD 64-bit platform问题
    Eclipse集成Tomcat的配置步骤实例
    搭建Eclipse+MyEclipse开发环境
  • 原文地址:https://www.cnblogs.com/svennee/p/4080619.html
Copyright © 2011-2022 走看看