Solrj3.4的使用
来源:互联网 发布:windows net snmp安装 编辑:程序博客网 时间:2024/06/06 00:41
前言
其实Solr3.4提供基于restful接口的服务,所以client使用任何语言都可以,但用client的访问方式可以提升开发效率。Solr官方推荐的客户端是Java写的solrj3.4和solr包中自带的ruby写的solr-ruby客户端。Solr-ruby的完善性我没查,直接用了solrj3.4。solrj的文档并不多,且很碎(solrj跟solr的文档都在http://wiki.apache.org,wiki的方式,且solr版本超多)。这里记录一些我用到的solrj的接口,备忘。
-------------------------------------------------------------------------------------------------------------------------------------------------------------
如何使用Solrj3.4连接solr服务器
Solrj3.4中,SolrServer作为solr服务器的抽象,ta是一个抽象类;更普遍的是使用CommonsHttpSolrServer对象作为solr服务器的实例,构建ta时需要传递两个参数,一个是solr服务器的url根地址,一个是new出来的HttpClient对象(在apache common包中)。实例代码如下:
HttpClient client = new HttpClient(); SolrServer solrServer = new CommonsHttpSolrServer("http://localhost:8983/solr", client);
如何使solrj3.4支持搜索结果高亮
- solr开关高亮的参数是hl,设为true表示返回结果带有高亮信息,设为false则没有,如果不指定,则默认是false;
- 高亮的域由hl.fl来指定,可指定用英文逗号分割的field名称,比如对content和title做高亮,就需要设置hl.fl=content,title;
- (更多的高亮参数可参见:http://wiki.apache.org/solr/HighlightingParameters)
在solr3.4中,高亮的参数是通过在SolrQuery对象中设置属性值来实现的,实例代码如下(摘自http://wiki.apache.org/solr/Solrj,有删减):
SolrQuery query = new SolrQuery(); query.setQuery("foo"); query.setParam("hl.fl", "content,title"); query.setParam("hl.mergeContiguous", "true"); QueryResponse queryResponse = getSolrServer().query(query);
参数获取高亮结果的实例代码如下(这段代码我需要实际测试下):
Iterator<SolrDocument> iter = queryResponse.getResults().iterator(); while (iter.hasNext()) { SolrDocument resultDoc = iter.next(); String content = (String) resultDoc.getFieldValue("content"); String id = (String) resultDoc.getFieldValue("id"); //id is the uniqueKey field if (queryResponse.getHighlighting().get(id) != null) { List<String> highlightSnippets = queryResponse.getHighlighting().get(id).get("content"); } }
如何使用做复杂查询
对于这样的需求:“搜索出一定包含key1,且至少包含key2、key3、key4中一个的结果”。就需要用到solr的复杂查询了。我没细看solrj的语法,不过尝试了下这样写是满足需求的:key1 AND (key2 OR key3 OR key4)
- Solrj3.4的使用
- 正则的使用4
- EventBus2.4的使用
- 4 Lock的使用
- 使用 .NET的IO(4)
- 使用 .NET的IO(4)
- Axis1.4 的客户端使用
- PropertyGrid控件的使用4
- PostgreSQL+PostGIS的使用 4
- 于nutch1.4的使用
- silverlight 4 ContextMenu的使用
- jbpm4.4 timer的使用
- 4、Linux的日常使用
- Python3.4 PIL的使用
- 虚幻4 shader的使用
- 4、Basefragment的封装使用
- 4、vue.js的使用
- 4 jni opencv的使用
- FS_S5PC100平台上Linux Camera驱动开发详解(二)
- insmod: error inserting 'hello.ko': -1 Invalid module format
- 常见电脑字符编码总结
- Struts2中获取Session的方法
- jar文件详解
- Solrj3.4的使用
- Cookie安全漫谈
- POJ 1321 棋盘问题
- 字符杂项设备 misc_register
- delphi调用LUA函数来处理一些逻辑
- 13个超棒的代码资源网站推荐
- 让AlertDialog在按钮被点击后不消失
- 为什么要分段提交?
- KVM客户机添加virsh console 虚拟终端支持及原理