- 浏览: 834975 次
文章分类
- 全部博客 (365)
- java (124)
- spring mvc (21)
- spring (22)
- struts2 (6)
- jquery (27)
- javascript (24)
- mybatis/ibatis (8)
- hibernate (7)
- compass (11)
- lucene (26)
- flex (0)
- actionscript (0)
- webservice (8)
- rabbitMQ/Socket (15)
- jsp/freemaker (5)
- 数据库 (27)
- 应用服务器 (21)
- Hadoop (1)
- PowerDesigner (3)
- EJB (0)
- JPA (0)
- PHP (2)
- C# (0)
- .NET (0)
- html (2)
- xml (5)
- android (7)
- flume (1)
- zookeeper (0)
- 证书加密 (2)
- maven (1)
- redis (2)
- cas (11)
最新评论
-
zuxianghuang:
通过pom上传报错 Artifact upload faile ...
nexus上传了jar包.通过maven引用当前jar,不能取得jar的依赖 -
流年末年:
百度网盘的挂了吧???
SSO单点登录系列3:cas-server端配置认证方式实践(数据源+自定义java类认证) -
953434367:
UfgovDBUtil 是什么类
Java发HTTP POST请求(内容为xml格式) -
smilease:
帮大忙了,非常感谢
freemaker自动生成源代码 -
syd505:
十分感谢作者无私的分享,仔细阅读后很多地方得以解惑。
Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
百度和google中都有文字的自动补全功能,以前项目中也用过实现思路非常简单一般就是extjs 或者jquery 的前台插件通过异步加载数据然后显示,
现在项目的数据源是基于solr所以只有使用solr的autocomplete功能,搜索了很多无数 百度上的 网页根本没有关于solr的自动补全的功能实现,就连关于solr应用性的文章也是比较少的,无奈只好在google上搞了,全都是英文的,尝试了很多的方法都不能使用最后发现是solr api的问题国外的大部分资料都是用得这个写法
- private List<Term> query(String q, int limit) {
- List<Term> items = null;
- CommonsHttpSolrServer server = null;
- try {
- server = new CommonsHttpSolrServer("http://localhost:8983/solr");
- } catch(Exception e) { e.printStackTrace(); }
- // escape special characters
- SolrQuery query = new SolrQuery();
- query.addTermsField("spell");
- query.setTerms(true);
- query.setTermsLimit(limit);
- query.setTermsLower(q);
- query.setTermsPrefix(q);
- query.setQueryType("/terms");
- try {
- QueryResponse qr = server.query(query);
- TermsResponse resp = qr.getTermsResponse();
- items = resp.getTerms("spell");
- } catch (SolrServerException e) {
- items = null;
- }
- return items;
- }
private List<Term> query(String q, int limit) { List<Term> items = null; CommonsHttpSolrServer server = null; try { server = new CommonsHttpSolrServer("http://localhost:8983/solr"); } catch(Exception e) { e.printStackTrace(); } // escape special characters SolrQuery query = new SolrQuery(); query.addTermsField("spell"); query.setTerms(true); query.setTermsLimit(limit); query.setTermsLower(q); query.setTermsPrefix(q); query.setQueryType("/terms"); try { QueryResponse qr = server.query(query); TermsResponse resp = qr.getTermsResponse(); items = resp.getTerms("spell"); } catch (SolrServerException e) { items = null; } return items; }
但是不知道是人品问题还是怎么的,我下载的solr1.4 SolrQuery类根本就没有这个addTermsField 和setTermsPrefix 方法,
这是我的下载地址http://mirror.nus.edu.sg/apache//lucene/solr/1.4.1/
solr实现autocomplete功能其实非常简单,仅仅需要下边的这个url就可以实现
- fl=id,name&rows=0&q=*:*&facet=true&facet.field=name_auto&facet.mincount=1&facet.prefix=input
fl=id,name&rows=0&q=*:*&facet=true&facet.field=name_auto&facet.mincount=1&facet.prefix=input
我们所要做的就是用solrj的api拼装成这个字符串请求tomcat就ok了
下面是拼装代码
- CommonsHttpSolrServer service = new CommonsHttpSolrServer(
- "http://localhost:8080/solr/targetCore");
- List<Term> list = new ArrayList<Term>();
- QueryResponse queryResponse = new QueryResponse();
- SolrQuery query = new SolrQuery();
- // fl=id,name&rows=0&q=*:*&facet=true&facet.field=searchText&facet.
- // mincount=1&facet.prefix=sony
- //facet=true&rows=0&fl=id%2Cname&facet.prefix=sony&facet.field=searchText
- try {
- query.setFacet(true);
- query.setRows(0);
- query.setQuery("*:*");
- query.setFacetPrefix("sony");
- query.addFacetField("searchText");
- System.out.println(query.toString());
- queryResponse = service.query(query, METHOD.POST);
- } catch (Exception e) {
- // TODO: handle exception
- e.printStackTrace();
- }
CommonsHttpSolrServer service = new CommonsHttpSolrServer( "http://localhost:8080/solr/targetCore"); List<Term> list = new ArrayList<Term>(); QueryResponse queryResponse = new QueryResponse(); SolrQuery query = new SolrQuery(); // fl=id,name&rows=0&q=*:*&facet=true&facet.field=searchText&facet. // mincount=1&facet.prefix=sony //facet=true&rows=0&fl=id%2Cname&facet.prefix=sony&facet.field=searchText try { query.setFacet(true); query.setRows(0); query.setQuery("*:*"); query.setFacetPrefix("sony"); query.addFacetField("searchText"); System.out.println(query.toString()); queryResponse = service.query(query, METHOD.POST); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); }
返回的内容如下
searchText 中的以sony开头的词都是自动补全的结果,其实这些都是lucene中的term
下边代码使用solrj的api解析文本的过程
- CommonsHttpSolrServer service = new CommonsHttpSolrServer(
- "http://localhost:8080/solr/targetCore");
- List<Term> list = new ArrayList<Term>();
- QueryResponse queryResponse = new QueryResponse();
- SolrQuery query = new SolrQuery();
- // fl=id,name&rows=0&q=*:*&facet=true&facet.field=searchText&facet.
- // mincount=1&facet.prefix=sony
- //facet=true&rows=0&fl=id%2Cname&facet.prefix=sony&facet.field=searchText
- try {
- query.setFacet(true);
- query.setRows(0);
- query.setQuery("*:*");
- query.setFacetPrefix("索尼");
- query.addFacetField("searchText");
- System.out.println(query.toString());
- queryResponse = service.query(query, METHOD.POST);
- } catch (Exception e) {
- // TODO: handle exception
- e.printStackTrace();
- }
- NamedList<Object> nl = queryResponse.getResponse();
- NamedList<Object> nl2 = (NamedList<Object>) nl.get("facet_counts");
- NamedList<Object> nl3 = (NamedList<Object>) nl2.get("facet_fields");
- NamedList<Object> nl4 = (NamedList<Object>) nl3.get("searchText");
- System.out.println(nl4.size());
- Iterator<Entry<String, Object>> it = nl4.iterator();
- while (it.hasNext()) {
- Entry<String, Object> entry = it.next();
- System.out.println(entry.getKey() + "____" + entry.getValue());
- }
- SolrDocumentList results = queryResponse.getResults();
- SolrResult solrResult = new SolrResult();
CommonsHttpSolrServer service = new CommonsHttpSolrServer( "http://localhost:8080/solr/targetCore"); List<Term> list = new ArrayList<Term>(); QueryResponse queryResponse = new QueryResponse(); SolrQuery query = new SolrQuery(); // fl=id,name&rows=0&q=*:*&facet=true&facet.field=searchText&facet. // mincount=1&facet.prefix=sony //facet=true&rows=0&fl=id%2Cname&facet.prefix=sony&facet.field=searchText try { query.setFacet(true); query.setRows(0); query.setQuery("*:*"); query.setFacetPrefix("索尼"); query.addFacetField("searchText"); System.out.println(query.toString()); queryResponse = service.query(query, METHOD.POST); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } NamedList<Object> nl = queryResponse.getResponse(); NamedList<Object> nl2 = (NamedList<Object>) nl.get("facet_counts"); NamedList<Object> nl3 = (NamedList<Object>) nl2.get("facet_fields"); NamedList<Object> nl4 = (NamedList<Object>) nl3.get("searchText"); System.out.println(nl4.size()); Iterator<Entry<String, Object>> it = nl4.iterator(); while (it.hasNext()) { Entry<String, Object> entry = it.next(); System.out.println(entry.getKey() + "____" + entry.getValue()); } SolrDocumentList results = queryResponse.getResults(); SolrResult solrResult = new SolrResult();
发表评论
-
Solr4.0+IKAnalyzer中文分词安装
2012-11-29 19:14 1540有近2年没接触Solr跟Lucene ... -
solr搜索打分规制排序
2012-09-26 21:58 2362solr使用了Lucene的内核,也继承了Luce ... -
solr DataimportHanler
2012-09-22 17:01 1151大多数的应用程序将数据存储在关系数据库、xml文件 ... -
全文搜索服务器solr之客户端 - solrj二次开发
2012-09-21 09:07 4787Solrj已经是很强大的solr客户端了。它本身就包装了h ... -
Solr Data Import 快速入门
2012-09-20 14:32 808原文出处:http://blog.chenl ... -
JAVA环境下利用solrj二次开发SOlR搜索的环境部署常见错误
2012-09-20 11:36 1757问题一:出现控制台坏的响应错误一Bad reque ... -
Solr学习总结
2012-09-20 10:06 6405一、 SOLR搭建企业搜索平台 运行环境: 运行容器:Tomc ... -
olr 的客户端调用solrj 建索引+分页查询
2012-09-20 08:54 1889在 solr 3.5 配置及应用(一) 讲过一了 sol ... -
Solr笔记
2012-09-19 23:07 1254... -
Apache Solr 初级教程(介绍、安装部署、Java接口、中文分词)
2012-09-19 22:56 1726Apache Solr 介绍 Solr 是 ... -
lucene3.0 分页显示与高亮显示(转)
2012-09-19 11:44 1651分页类 Java代码 pac ... -
lucene3 中文IKAnalyzer分词例子
2012-09-10 13:37 1150import java.io.IOException; im ... -
Lucene3.0.1 学习笔记
2012-09-08 08:57 924不管怎么说,搜索都是非 ... -
Compass2.0.2自带例子解析
2012-09-05 08:47 1436Compass2.0.2自带例子解析: 下面的代码来自com ... -
compass站内搜索
2012-09-05 08:49 960compass站内搜索: 1.去官方网站下载compass的 ... -
Spring + Compass + paoding配置
2012-09-05 08:50 1022Spring + Compass + paoding配置: ... -
配置compass的索引位置为相对路径
2012-09-01 10:49 1323配置compass的索引位置为相对路径: Compass是对 ... -
lucene创建索引
2012-09-01 10:48 1060lucene创建索引: import java.io.Fi ... -
Lucene demo调试运行:
2012-09-01 10:47 1988Lucene demo调试运行: 运行环境: JDK ... -
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎
2012-09-01 10:43 3418前两天看到了一个中国新闻网,这个网站的搜索form的a ...
相关推荐
类似京东,淘宝搜索自动补全功能。通过suggest.js插件来完成功能开发。
bass"在内的建议(注意"bass"不一定是第一个词) 内容 支持矩阵 solr-自动完成 索尔 1.6.7.1.0 7.1.0 1.6.6.5.1 6.5.1 1.6.5.2.0 5.2.0 1.6.6.0.1 6.0.1 1.6.6.3.0 6.3.0 建造 您需要 maven 和 JDK 8: $ mvn clean ...
solr.warsolr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包...
亲测solr7.7.2可用,并且在原有的无需验证的基础上增加了带账号密码验证的功能,所以有两个jar包,网友可根据自己的需要下载。账号密码验证的格式为user_pwd=user:password
solr
solr
1.学员操作手册-Solr搜索自动补全 2.solr实训教程.doc 3.积分商城基于Solr的搜索引擎优化.pdf 4.基于Solr的搜索引擎优化讲义.pdf 5.课程大纲-基于搜索引擎培训.doc 6.学员操作手册-Solr数据库插入索引.doc 7.学员...
solr自动增量更新jar包,适用于solr4的版本,希望对大家有帮助
solr文档
Solr 8.11.2是8.x系列的最后一个版本,新版本已经是9.0版本了。 1,什么是solr? Solr是一个独立的企业级搜索应用服务器,他对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务提供一定格式...
solr的使用
solr manageschema 配置文件,增加了分词器后的配置文件
bbop-widget-solr-自动完成 Solr的自动完成小部件。
关于solr的一个小例子,希望能帮到大家。
solr技术文solr技术文solr技术文
Solr 依存于Lucene,因为Solr底层的核心技术是使用Lucene 来实现的,Solr和Lucene的本质区别有以下三点:搜索服务器,企业级和管理。...所以说,一句话概括 Solr: Solr是Lucene面向企业搜索应用的扩展。
Solr定时更新Solr定时更新
solr自动更新包
如何使用solr搭建服务器
Solr它是一种开放源码的、基于 Lucene 的搜索服务器,可以高效的完成全文检索的功能。在本套课程中,我们将全面的讲解Solr,从Solr基础到Solr高级,再到项目实战,基本上涵盖了Solr中所有的知识点。 主讲内容 章节一...