Lucene.net是目前在.net环境中被普遍使用的全文索引的开源项目,这次在项目的开发中也使用它进行全文索引。
在开发过程中碰到一些小问题就是对多字段和多索引目录进行搜索。
1、多字段搜索就是同时要一个以上的字段中的内容进行比较搜索,类似概念在SQL中就是select * from Table where a like '%query%' or b like '%query%'。

Lucene.net中的单个字段查询大家都比较熟悉,这里对字段content进行搜索
Query query = QueryParser.Parse(querystr,"content",new ChineseAnalyzer());
Hits hits = searcher.Search(query);

对多个字段查询用到一个MultiFieldQueryParser对象,该对象继承自Query,我们要对字段title,content进行搜索。
string[] fields = {"content","title"};
Query multiquery = MultiFieldQueryParser.Parse(querystr,fields,new ChineseAnalyzer());
Hits hits = searcher.Search(multiquery);

2、多索引目录就是要在多个索引目录的中进行比较搜索,类似概念在SQL中就是select * from TableA union select * from TableB。
IndexSearcher[] searchers = new IndexSearcher[2];
searchers[0] = new IndexSearcher(IndexPath0);
searchers[1] = new IndexSearcher(IndexPath1);

MultiSearcher multisearcher = new MultiSearcher(searchers);
TopDocs multitopdocs = multisearcher.Search(query, null, 1000);
这个搜索的结果可能有相同的信息,比如你有一条相同的信息在多个目录中索引,搜索的结果就会出现多次相同的信息。

还有一种搜索方式是用到ParallelMultiSearcher这个对象,它是从MulitSearcher继承而来。
ParallelMultiSearcher parallelmultisearcher = new ParallelMultiSearcher(searchers);
TopDocs paralleltopdocs = parallelmultisearcher.Search(query, null, 1000);
这个搜索是对搜索后的结果进行合并,剔除重复的信息。

Lucene.net多字段(Fields)、多索引目录(IndexSearcher)搜索相关推荐

  1. lucene全文搜索之三:生成索引字段,创建索引文档(给索引字段加权)基于lucene5.5.3...

    前言:上一章中我们已经实现了索引器的创建,但是我们没有索引文档,本章将会讲解如何生成字段.创建索引文档,给字段加权以及保存文档到索引器目录 luncene5.5.3集合jar包下载地址:http:// ...

  2. lucene3.5学习笔记02--创建索引和建立搜索

    先大致了解一下lucene的组成结构 lucene的组成结构:对于外部应用来说索引模块(index)和检索模块(search)是主要的外部应用入口 org.apache.Lucene.search/ ...

  3. lucene 多索引目录搜索实现方法

    http://akululu.iteye.com/blog/314130 多索引目录就是要在多个索引目录的中进行比较搜索,类似概念在SQL中就是select * from TableA union s ...

  4. 文档(Documents), 字段(Fields), 及模式设计(Schema Design)

    1. 文档(Documents), 字段(Fields), 及模式设计(Schema Design) 1.1 概览 1.1.1 Solr的Schema文件 Solr在schema文件中存储它需要知道的 ...

  5. Lucene概述第一部分:创建索引

    介绍 我最近一直在与开源搜索引擎Lucene合作 . 我不是专家,但是由于我只是浏览了一些相当稀疏的文档并将应用程序从Lucene的很旧的版本迁移到了最新版本的2.4,所以我在总体上很清楚. Luce ...

  6. 【Elasticsearch】Lucene 中的 Stored Fields 存储优化 自定义 存储类型 序列化 方式

    1.概述 转载:Lucene 中的 Stored Fields 存储优化 1 背景 Qunar 酒店的搜索和 suggest 是基于 Lucene 构建的,在我们的使用场景中,由于召回和排序是作为两个 ...

  7. SpringCloud学习笔记024---SpringBoot集成Lucene实现全文检索_分词_索引_更新_删除文档_词条搜索_多条件查询

    JAVA技术交流QQ群:170933152 先看代码实现,下面有lucene介绍: 测试用例 Github 代码 代码我已放到 Github ,导入spring-boot-lucene-demo 项目 ...

  8. wukong引擎源码分析之索引——part 3 文档评分 无非就是将docid对应的fields信息存储起来,为搜索结果rank评分用...

    之前的文章分析过,接受索引请求处理的代码在segmenter_worker.go里: func (engine *Engine) segmenterWorker() {for {request := ...

  9. 【Groovy】编译时元编程 ( AST 语法树分析 | ClassNode 根节点 | 方法 Methods 节点 | 字段 Fields 节点 | 属性 Properties 节点 )

    文章目录 一.AST 语法树分析 一.AST 语法树分析 在上一篇博客 [Groovy]编译时元编程 ( 编译时元编程引入 | 声明需要编译时处理的类 | 分析 Groovy 类的 AST 语法树 ) ...

最新文章

  1. 混合颜料(求线性组的基)
  2. linux c主要应用在哪个领域
  3. outlook里面邮件不能显示图片
  4. MySQL等关系型数据库概述
  5. 后勤管理系统_教育信息化2.0,2019年校园智慧后勤管理系统五大品牌
  6. 【解题报告】Leecode 384. 打乱数组——Leecode每日一题系列
  7. diy nas配置推荐2019_在Windows Server 2019上配置NAS的方法
  8. SAP UI5 Web Component的React表格控件用法
  9. yml连接sqlserver_springboot配置双数据源 MySQL和SqlServer
  10. CALLBACKS IN C++ USING TEMPLATE FUNCTORS
  11. 冲突符号_冲突营销关键词连载(二) 冲突
  12. android+截图长屏软件,可能是安卓最好用的长截图工具 秒杀各种拼图软件|小安教程...
  13. 通过爬虫获取免费IP代理,搭建自己的IP池(http)
  14. linux看oracle数据库实例,oracle数据库实例的创建[linux]
  15. 关于Flume断点续传(防止重复消费)的解决方案
  16. 创建一个长方形类,成员域有长方形的长和宽,成员方法有计算长方形的面积,在main方法中创建长方形类对象,并调用计算长方形面积的方法。
  17. 数据分析报告,就该这么写!超详细攻略奉上
  18. ZCMU 1635 超大型 LED 显示屏
  19. 2017年 团体程序设计天梯赛——题解集
  20. php导入excel 代码,php excel 导入导出源代码

热门文章

  1. Linux 解压缩tar经历,Linux命令 -- tar解压缩命令
  2. 下载软件一直转圈圈_来了来了,百度网盘不限速!亲测满速,支持免登录下载!...
  3. Java stackoverflowerror异常与outofmemoryerror异常区别
  4. Boost.PropertyTree 属性树的简介
  5. 【2016北京集训测试赛】river
  6. 20150110--魔术方法魔术常量+面向对象-02
  7. 【转载】10个最“优秀”的代码注释
  8. HDOJ 1143 Tri Tiling
  9. Android内核开发:学会分析系统的启动log
  10. driver: Linux设备模型之input子系统详解