AjaxSolr —构建 自己的 solr 应用 界面
目录
1. AjaxSolr 简介
S olr 服务能够 提供 完整 的前后台 搜索 服务 , 通常我们喜欢 使用 solr 的 admin 页面完成 solr 的集群 管理,数据搜索, 数据 分析 等的任务 ,其实,我们也可以 利用 solr 的 javascript API---AjaxSolr 来轻松 的建立一个 my -style 的 solr 应用 界面 。
由于 AjaxSolr 仅需要 实现 与 solr 进行交互的 ajax 任务 , 所以 , 无论 你 的 开发任务使用 JQuery, MooTools, Prototype, Dojo 或者 任何其他的框架,都可以方便的嵌入 AjaxSolr 。
2 . A j axSolr 使用
2 .1 manager 管理器
本文 以 JQuery 为例,简单介绍使用 AjaxSolr 实现 与 solr 引擎的对话 。
Ajax Solr 库 中包括以下文件:
对于 最基础的 应用 ,即 简单 的搜索应用我们可以引入下面的包 :
最初 ,我们需要 定义 一个 AjaxSolr 的 Manager 类,作为 solr 的搜索管理器 ,其中 需要 的参数为 solrUrl , 即 访问 索引的地址,通常格式为: http:// {hostip}:8983/solr/{indexname} ,如果 需要通过代理 url 来 访问 solr ( 相应 安全机制 ) ,这里也可以使用代理 url 。
接着 , 需要 对 管理器 Manager 进行初始化:
以及设置搜索参数:
上述 语句 使用 了 AbstractManager 的 setStore 方法 和 ParameterStore 类 , 用于 添加查询 项 , 当 query 的值为 “* : *” 时 ,表示 需要搜索 所有的索引内容 ;具体 query 的格式将会在下一 节 中介绍。 使用 上述方法可以添加更多的搜索参数,如 rows ( 显示 行数 ) , sort( 排序 方式 ) 等等 。
设置 好 Manager 的各项 参数之后,可通过 do Request() 方法直接 执行搜索任务:
2 .2 结果显示 与处理
通过 上述操作便可以实现 调用 solr 接口 进行 查询 的任务, 但是 , 要获取检索结果 到界面上必须 继承 AbstractWidget 类 :
并 在 beforeRequest, afterRequest, template 方法 中 实现相应 的功能, 并 在初始化 Manager 之 前 向其添加 ResultWidget 类 的实例:
其中 , target 是 搜索结果返回到页面要添加到的页面元素 。
afterRequest 方法中可获取检索获得的文档: this.manager.response.docs ,可从中取出每一篇文档使用 template 方法进行处理,用以在界面上以自己需要的方式显示出来。
到此 ,便可以完成一个简单的 solr 应用 界面,可实现 solr 引擎的查询 并进行 结果的展示功能。
2 .3 关键字高亮 显示
Solr 可 通过设置查询参数 获取 高亮显示的关键字, 这些 参数可以通过上述介绍的 Manager.store.addByValue 的 方式添加, 可实现 高亮的 具体 参数将在下一节中介绍 。 添加参数完成后 启用 solr 管理器 , 执行 查询,查询返回的结果 在 a fterRequest 中 的处理方式略有不同, 如 上述说明, 正常 的检索结果存储在 this.manager.response .doc 中 ,而 启用 高亮的搜索结果 存储 在 this.manager.highlighting 中 , 因此 ,若要获得 高亮 的检索结果,需要从 this.manager.highlighting 中 获取 数据。
3 . Solr 查询 参数说明
第二节 提高使用下面的方式为 solr 管理器 添加 搜索 参数, 这里 介绍一些常用的参数及其应用格式。
q :查询 关键字,通常 格式 为 :“ 查询索引的字段名: 查询 关键字 ” ,若要 匹配所有文档可以使用符号“*:*” 赋值 给q, 同时 ,如果希望 solr 服务器对整个关键词不进行 切分 , 可以 使用“”将查询关键 词 包裹起来 , 如: title: “ 大数据 ” ,另外 ,若使用多个关键词进行检索,可使用() 将 关键词包裹,如:title: ( “ 大数据 ” OR /A ND “ 云计算 ”) ;
rows: 搜索 结果 返回 的 文档 数量,用于界面显示时可 设定 一个固定值, 显示 固定数量的结果信息;
start : 指定在搜索 到的所有结果中, 要 返回的第一 条 记录的偏移位置, 该 参数可以跟 rows 参数 配合 使用, 实现 在界面上的 分页 显示;
sort: 搜索 结果的排序方式, 可 按照某字段升序或降序 排序,格式 为排序字段 + 空格 + 升序 / 降序 说明,如: publishtime desc /asc ,另外 ,可以使用搜索得分进行排序,如 : score desc /asc ;
wt: 指定搜索 结果的输出格式,如 json, xml 等 ;
fl : 查询 结果返回的字段 ( Feild ) ,例如 仅需要 获得 查询到的 结果 文档的标题,可指定 fl 为 title ;
fq : 对 q 查询的结果进行进一步过滤,即在 搜索 结果中搜 索。
另外 , solr 的参数可以 设置搜索 关键字的高亮显示 , 具体参数如下:
hl : boolean 类型 ,设置为 true 表示启用查询结果的高亮显示;
hl.simple.pre , hl.simple.post :可设置 在 搜索 关键 词 前后的 css 样式,以 令 其在界面上突出显示, 如 , 设置 hl.simple.pre 为 <em class="hlt1" style=”…”> , 设置 hl.simple.post 为 </em> ;
hl.fl :设置 高亮显示出现的字段,如,包含有标题 title 和内容 content 两个 字段的索引,需要 title 和 content 显示时同时高亮,就需要设置 hl .fl 为 title content 。
Attachments:
AjaxSolr.docx (application/vnd.openxmlformats-officedocument.wordprocessingml.document)
AjaxSolr.docx (application/vnd.openxmlformats-officedocument.wordprocessingml.document)