Solr分页与高亮(使用SolrNet实现)

本节我们使用Asp.net MVC实现Solr客户端查询,建议使用SolrNet这个客户端,开源地址在:https://github.com/mausch/SolrNet

推荐的理由主要有:

1. 高效的反序列化操作;

2. 社区活跃,用户众多,有问题可以得到及时解决;

3. 最主要:使用方便。

下载后最好先编译几个DLL:SolrNet.DSL.dll  SolrNet.dll   HttpWebAdapters.dll

然后打开SampleSolrApp运行即可看到效果。由于本身自带的示例代码较繁琐,我们从简实现。

一、实现简单搜索功能:

现在Application_Start()中增加初始化代码:

SolrNet.Startup.Init<BookModel>("http://localhost:8080/solr/collection1");

注意引入SolrNet的命名空间:using SolrNet;

接着定义一个方法:

//定义solr

ISolrOperations<BookModel> solr = ServiceLocator.Current.GetInstance<ISolrOperations<BookModel>>();

QueryOptions options = new QueryOptions();

//创建条件集合

List<ISolrQuery> query = new List<ISolrQuery>();

//创建查询条件

var qTB = new SolrQueryByField("Title", keyword);

//添加条件

query.Add(qTB);

List<ISolrQuery> ar = new List<ISolrQuery>();

ar.Add(new SolrQueryByField("ContentDescription", keyword));

//创建地区之间的关系,是OR还是AND

var qArea = new SolrMultipleCriteriaQuery(ar, "OR");

//添加至条件集合

query.Add(qArea);

//按照时间倒排序.

options.AddOrder(new SolrNet.SortOrder("PublishDate", Order.DESC));

//条件集合之间的关系

var qTBO = new SolrMultipleCriteriaQuery(query, "AND");

//执行查询

SolrQueryResults<BookModel> results = solr.Query(qTBO, options);

二、高亮设置

高亮设置有多种实现方式:

1. Solr本身高亮:

2, 在客户端中设置参数,告诉Solr服务器返回高亮。

var high = new HighlightingParameters();

high.Fields = new List<string> { "Title" };

high.BeforeTerm = "<font color=‘red‘><b>";

high.AfterTerm = "</b></font>";

options.Highlight = high;

同时设置高亮的标签,但是由于返回的高亮是单独的集合不能直接用于显示,所以需要合并下:

var highlights = results.Highlights;

foreach (var item in results)

{

var t = highlights[item.ID.ToString()].Values.ToList()[0].ToList()[0];

item.Title = t;

}

三、 SolrNet分页

先下载MvcPager,添加引用,在View中引入:

@model PagedList<BookModel>

添加分页标签:

@Html.Pager(Model, new PagerOptions { PageIndexParameterName = "pageIndex" })

实现分页参数传递:

int totalCount = 0, pageSize=10;

var result = Search(txtKey, pageIndex, pageSize, out totalCount);

var model = new PagedList<BookModel>(result, pageIndex, pageSize, totalCount);

给Solr的查询参数中加入分页信息:

QueryOptions options = new QueryOptions();

options.Rows = pageSize;//数据条数

options.Start = pageIndex;//开始项

代码下载

时间: 2024-10-18 07:24:33

Solr分页与高亮(使用SolrNet实现)的相关文章

Solr学习总结(六)SolrNet的高级用法(复杂查询,分页,高亮,Facet查询)

上一篇,讲到了SolrNet的基本用法及CURD,这个算是SolrNet 的入门知识介绍吧,昨天写完之后,有朋友评论说,这些感觉都被写烂了.没错,这些基本的用法,在网上百度,资料肯定一大堆,有一些写的肯定比我的好,不过,这个是Solr系列文章,会从Solr的基础入门讲到实际开发中的分页,高亮,Facet查询等高级用法.所以,基础的入门也会涉及一些,望大家见谅.我用这么多篇文章,来总结Solr 也是为了将Solr 的 安装,配置,开发等等,整个过程的资料,都能总结汇集到一起,这样不管是懂Solr还

在Lucene或Solr中实现高亮的策略

一:功能背景 最近要做个高亮的搜索需求,以前也搞过,所以没啥难度,只不过原来用的是Lucene,现在要换成Solr而已,在Lucene4.x的时候,散仙在以前的文章中也分析过如何在搜索的时候实现高亮,主要有三种方式,具体内容,请参考散仙以前的2篇文章: 第一:在Lucene4.3中实现高亮的方式  http://qindongliang.iteye.com/blog/1953409 第二:在Solr4.3中服务端高亮的方式  http://qindongliang.iteye.com/blog/

Lucene的多域查询、结果中查询、查询结果分页、高亮查询结果和结果评分

1.针对多个域的一次性查询 1.1.三种方案 使用lucene构造搜索引擎的时候,如果要针对多个域进行一次性查询,一般来说有三种方法: 第一种实现方法是创建多值的全包含域的文本进行索引,这个方案最简单.但是这个防范有个缺点:你不能直接对每个域的加权进行控制. 第二种方法是使用MultiFieldQueryParser,它是QueryParser的子类,它会在后台程序中实例化一个QueryParser对 象,用来针对每个域进行查询表达式的解析,然后使用BooleanQuery将查询结果合并起来.当

Solr 实现

Solr分页与高亮(使用SolrNet实现) 本节我们使用Asp.net MVC实现Solr客户端查询,建议使用SolrNet这个客户端,开源地址在:https://github.com/mausch/SolrNet 推荐的理由主要有: 1. 高效的反序列化操作: 2. 社区活跃,用户众多,有问题可以得到及时解决: 3. 最主要:使用方便. 下载后最好先编译几个DLL:SolrNet.DSL.dll  SolrNet.dll   HttpWebAdapters.dll 然后打开SampleSol

说一说solr在tomcat,jetty上的运行和安装优缺点

本文是我从别的文章中组合而成的,结合自己实际操作进行了修改. Solr是什么 Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器.Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展,并对索引.搜索性能进行了优化 Solr可以独立运行,运行在Jetty.Tomcat等这些Servlet容器中,Solr索引的实现方法很简单,用POST方法向Solr服务器发送一个描述Field及其内容的XML文档,Solr根据xml文档添加.删除

基于Solr的HBase多条件查询测试

转自:http://www.cnblogs.com/chenz/articles/3229997.html 背景: 某电信项目中采用HBase来存储用户终端明细数据,供前台页面即时查询.HBase无可置疑拥有其优势,但其本身只对rowkey支持毫秒级的快速检索,对于多字段的组合查询却无能为力.针对HBase的多条件查询也有多种方案,但是这些方案要么太复杂,要么效率太低,本文只对基于Solr的HBase多条件查询方案进行测试和验证. 原理: 基于Solr的HBase多条件查询原理很简单,将HBas

基于Solr的HBase多条件查询

基于Solr的HBase多条件查询——转载: 背景: 某电信项目中采用HBase来存储用户终端明细数据,供前台页面即时查询.HBase无可置疑拥有其优势,但其本身只对rowkey支持毫秒级的快速检索,对于多字段的组合查询却无能为力. 针对HBase的多条件查询也有多种方案,但是这些方案要么太复杂,要么效率太低,本文只对基于Solr的HBase多条件查询方案进行测试和验证. 原理: 基于Solr的HBase多条件查询原理很简单,将HBase表中涉及条件过滤的字段和rowkey在Solr中建立索引,

2016最新新巴巴运动网项目实战开发

课程目录以及下载地址: 16版新巴巴-价值1.1W├─day01│ 01课程介绍│ 02开发环境│ 02项目介绍│ 04项目技术介绍│ 05系统介绍│ 06后台页面介绍│ 07前台系统页面介绍│ 08项目架构│ 09项目搭建之前的准备│ 10创建父工程│ 11创建Maven的其它工程│ 12多个Tomcat设置│ ├─day02│ 01今天内容│ 02搭建SVN服务器│ 03提交代码│ 04SVN检出│ 05导入所有jar包│ 06整合Spring+Mybatis之1│ 07Spring+Myb

《Pro AngularJS》学习小结-01

<Pro AngularJS>该书以一个SportsStore案例为主线铺开. 一.开发环境设置 该书中所用的server开发环境是Deployed,从来没听说过,而且作者也说该server没什么人用,我干脆弃用之.其他的环境包括 NodeJS--这个必须装 karma--测试环境,前期还没有用到,以后认真研究,毕竟AngularJS一大特点是Unit Test bootstrap--这个现在应该普遍使用了,O(∩_∩)O webstorm--现在唯一支持AngularJS插件的IDE 我基本