zoukankan      html  css  js  c++  java
  • Lucene.NET搜索多个索引文件

    有时对于一个Document来说,有一些Field会被频繁地操作,而另一些Field则不会。这时可以将频繁操作的Field和其他Field分开存放,而在搜索时同时检索这两部分Field而提取出一个完整的Document。 

        这要求两个索引包含的Document的数量必须相同, 在创建索引的时候,可以同时创建多个IndexWriter,将一个Document根据需要拆分成多个包含部分Field的Document,并将这些Document分别添加到不同的索引。

         而在搜索时,则必须借助ParallelReader类来整合。

    Directory dir1=FSDirectory.getDirectory(new File(INDEX_DIR1),false);
         Directory dir2
    =FSDirectory.getDirectory(new File(INDEX_DIR2),false);
        ParallelReader preader
    =new ParallelReader();
         preader.add(IndexReader.open(dir1));
         preader.add(IndexReader.open(dir2));
         IndexSearcher searcher
    =new IndexSearcher(preader);

    之后的操作和一般的搜索相同。

    Lucene.NET 同时搜索多个索引

      在创建索引的时候可以根据分类需要创建多个索引,而在搜索时可以同时搜索所有的索引, 这一功能通过MultiSearcher实现。

    Java模式的写法:
    IndexSearcher[] searchers
    =new IndexSearcher[]{new IndexSearcher(dir1),new IndexSearcher(dir2)};
           MultiSearcher msearcher
    =new MultiSearcher(searchers);

    .NET模式的写法:
    MultiReader reader 
    = new MultiReader(new IndexReader[] { 
            IndexReader.Open(System.IO.Path.Combine(Tpl.CommonSet.Get(
    "ThreadsIndexsData"),"main")),
            IndexReader.Open(System.IO.Path.Combine(Tpl.CommonSet.Get(
    "ThreadsIndexsData"),"1")) }
            );
        IndexSearcher searcher 
    = new IndexSearcher(reader);

  • 相关阅读:
    XP的定时关机命令?
    Vim简明教程【CoolShell】
    我和小美的撸码日记(3)之中的一个句话搞定MVC表单页数据绑定与提交
    Linux/RedHat 编译安装GNU gcc 4.9.0 (g++)
    真实股市房市信托本质,金融故事三则:钱都去哪儿了?
    一分钟制作U盘版BT3
    Android Studio中导入第三方库
    WebService究竟是什么?
    “权限”用英语该用哪个?
    Cocos2d-x v3.0 新的事件调度方法 lambda表达式的使用
  • 原文地址:https://www.cnblogs.com/wudingfeng/p/Lucene.html
Copyright © 2011-2022 走看看