最近一直在研究lucene,目的是想让网站实现像搜索引擎那样的搜索,可以快速、准确的帮用户查询出想要的结果。废话不多说,上代码实例:

1.利用BooleanQuery进行多条件搜索(比较灵活)
 
Lucene.Net.Search.BooleanQuery boolQuery = new Lucene.Net.Search.BooleanQuery();
 
Lucene.Net.QueryParsers.QueryParser parser = new Lucene.Net.QueryParsers.QueryParser("title", pgAnalyzer);
boolQuery.Add(parser.Parse(this.txtKeywords.Text), Lucene.Net.Search.BooleanClause.Occur.MUST);
 
parser = new Lucene.Net.QueryParsers.QueryParser("productsummary", pgAnalyzer);
boolQuery.Add(parser.Parse(this.txtKeywords.Text), Lucene.Net.Search.BooleanClause.Occur.SHOULD);
Lucene.Net.Search.Hits hits = search.Search(boolQuery);
在这里,首先是初始化一个BooleanQuery对象,然后它有一个方法,是需要两个参数,一个是Lucene.Net.Search.Query对象,另一个是Lucene.Net.Search.BooleanClause.Occur枚举。第一个参数不难理解,着重说明第二个参数,它表示的是传入进来的搜索,应该以怎样的方式进行搜索,这里Occur枚举有几种类型,MUST、MUST_NOT、SHOULD,MUST表示,要搜索的词在指定的字段里(Query对象以指定)必须出现,而MUST_NOT则是完全相反的,SHOULD表示可出现可不出现,这样的话,意思就很容易懂了,第一个是表示说我要搜索的词,在Title 这个字段中,必须要出现的,而第二个则说明,在productsummary这个字段中,可出现可不出现。。。这样检索出来的结果就是,在Title中必须出现而在productsummary可有可无的结果集合。。
 
2.利用 MultiFieldQueryParser
string[] fileds = { "title", "productsummary" };
Lucene.Net.Search.BooleanClause.Occur[] occurs = new Lucene.Net.Search.BooleanClause.Occur[] { Lucene.Net.Search.BooleanClause.Occur.MUST, Lucene.Net.Search.BooleanClause.Occur.SHOULD };
 
Lucene.Net.Search.Query query = Lucene.Net.QueryParsers.MultiFieldQueryParser.Parse(this.txtKeywords.Text, fileds, occurs, pgAnalyzer);
Lucene.Net.Search.Hits hits = search.Search(query);
 
经过搜索测试,两者的结果是一样的,但是有个疑问的是,MultiFieldQueryParser.parse方法,传入的查询关键词数组,字段数组,occur数组,长度要一致,这个经过测试了几次,确实是这样子,可以查一个词,但是字段和occur要长度一致,大概是要进行一一匹配起来,这个可以做多个测试进行猜想,MultiFieldQueryParser应该是封装了BooleanQuery,使其代码更简洁,更容易操作。。

Lucene.net 多条件查询搜索的更多相关文章

  1. lucene多条件查询”搜索—BooleanQuery

    /** * “多条件查询”搜索—BooleanQuery * BooleanQuery也是实际开发过程中经常使用的一种Query. * 它其实是一个组合的Query,在使用时可以把各种Query对象添 ...

  2. 使用Lucene.net+盘古分词实现搜索查询

    这里我的的Demo的逻辑是这样的:首先我基本的数据是储存在Sql数据库中,然后我把我的必需的数据推送到MongoDB中,这样再去利用Lucene.net+盘古创建索引:其中为什么要这样把数据推送到Mo ...

  3. Lucene之模糊、精确、匹配、范围、多条件查询

    Lucene的查询方式很 丰富,对于数值类型的数据,采取TermRangeQuery的方式,对于String类型的,就可以采取TermQuery等,查询方式了,可以通过采取合适的查询方式,检索到数据. ...

  4. Lucene 的四大索引查询 ——bool 域搜索 通配符 范围搜索

    Lucene 的四大索引查询  清单1:使用布尔操作符 Java代码      //Test boolean operator blic void testOperator(String indexD ...

  5. 第六部分 数据搜索之使用HBASE的API实现条件查询

    题目 使用HADOOP的MAPReduce,实现以下功能: (1)基于大数据计算技术的条件查询:使用mapreduce框架,实现类似Hbase六个字段查询的功能 (2)时段流量统计:以hh:mm:ss ...

  6. 第四部分 数据搜索之使用HBASE的API实现条件查询

    因为数据清洗部分需要用到Mapreduce,所以先解决hbase的问题,可以用命令先在hbase存一下简单的数据进行查询,之后只要替换数据就可以实现了原本功能 在看该部分前,确保Hase API看了, ...

  7. Lucene实现索引和查询

    0引言 随着万维网的发展和大数据时代的到来,每天都有大量的数字化信息在生产.存储.传递和转化,如何从大量的信息中以一定的方式找到满足自己需求的信息,使之有序化并加以利用成为一大难题.全文检索技术是现如 ...

  8. Lucene 06 - 使用Lucene的Query API查询数据

    目录 1 Query对象的创建(方式一): 使用子类对象 1.1 常用的Query子类对象 1.2 常用的Query子类对象使用 1.2.1 使用TermQuery 1.2.2 使用NumericRa ...

  9. 整合hibernate的lucene大数据模糊查询

      大数据模糊查询lucene 对工作单使用 like模糊查询时,实际上 数据库内部索引无法使用 ,需要逐条比较查询内容,效率比较低在数据量很多情况下, 提供模糊查询性能,我们可以使用lucene全文 ...

随机推荐

  1. ✡ leetcode 169. Majority Element 求出现次数最多的数 --------- java

    Given an array of size n, find the majority element. The majority element is the element that appear ...

  2. CentOS7新特性

    一.CentOS7的4中模式 CentOS7里不在有0-6启动级别,而是4个target 1.graphical.target:多人模式,支持图形和命令行两种登录,对应之前的3,5级别 2.multi ...

  3. IIs安装&发布&解决遇到的问题

    IIS安装: IIS发布: 1.添加网站: 2.将发布的文件,copy到该网站的目录下 3. 刷新,文件显示出来,将其"转换为应用程序” => 4.在应用程序池中找到该网站相应的程序池 ...

  4. IT励志与指导文章合集(链接)

    乔布斯在斯坦福大学的演讲 http://www.cnblogs.com/tryingx/p/3715886.html 程序员的8个级别 http://www.cnblogs.com/tryingx/p ...

  5. JS自动格式化输入的数字/千位分隔符

    <script> function cc(s){         if(/[^0-9\.]/.test(s)) return "invalid value";     ...

  6. Apache Tomcat 7 安装与配置

    下载 首先需要下载tomcat7的安装文件,地址如下: http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.69/bin/apache-tomca ...

  7. AI(二):人脸识别

    微软提供的人脸识别服务可检测图片中一个或者多个人脸,并为人脸标记出边框,同时还可获得基于机器学习技术做出的面部特征预测.可支持的人脸功能有:年龄.性别.头部姿态.微笑检测.胡须检测以及27个面部重要特 ...

  8. Ninject使用介绍

    #region 第二种写法 /// <summary> /// using(IKernel tKernel=new StandardKernel(new PeoKernelServer() ...

  9. javaweb页面上展示动态图片

    HTML <img alt="点击设定" name="CONSTRUCTIONPLANHIS_IMAGE_curr_img_0" src="vi ...

  10. winform 异步添加文本提示

    后台代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data ...