- 浏览: 584626 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
青春依旧:
html5教学哪家强!当然要上华清远见!
深入理解浏览器兼容性模式 -
ashur:
真机智,看得我都笑自己了
js 字符串转dom 和dom 转字符串 -
panghaoyu:
实现一个智能提示功能需要ajax、数据库、jsp/php、算法 ...
solr第一弹 autocomplete(自动补全) -
FakLove:
连线如何删除啊
基于html5 的拖拽连线 -
FakLove:
连线可以再删除吗?
基于html5 的拖拽连线
百度和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; }
但是不知道是人品问题还是怎么的,我下载的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
我们所要做的就是用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(); }
返回的内容如下
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();
评论
4 楼
panghaoyu
2017-03-15
实现一个智能提示功能需要ajax、数据库、jsp/php、算法等很多知识,
如果数据量大,还需要特殊优化
一个小功能,花费太大精力很不划算
我使用了92find.c-o-m的搜索框智能提示功能托管服务,
只要一行javascript代码就可以实现百度、淘宝搜索框提示的全部功能
比如:汉字拼音匹配、拼音前缀匹配、模糊搜索、智能容错,还可以自定义提示词汇及其排序权重
花五分钟我的网站就可以部署同百度、淘宝一样强大好用的输入提示功能
同时兼容IE、Firefox、Safari、Chrome、Opera各种浏览器
兼容ios、Android、Windows
如果数据量大,还需要特殊优化
一个小功能,花费太大精力很不划算
我使用了92find.c-o-m的搜索框智能提示功能托管服务,
只要一行javascript代码就可以实现百度、淘宝搜索框提示的全部功能
比如:汉字拼音匹配、拼音前缀匹配、模糊搜索、智能容错,还可以自定义提示词汇及其排序权重
花五分钟我的网站就可以部署同百度、淘宝一样强大好用的输入提示功能
同时兼容IE、Firefox、Safari、Chrome、Opera各种浏览器
兼容ios、Android、Windows
3 楼
飞天奔月
2012-11-20
ak121077313 写道
额 其实我想知道是怎么抓取页面的。
jsoup 你也可以尝试下
2 楼
zha_zi
2011-04-08
数据采集不是我负责的,但是我知道是用heritrix-1.14.3.zip这个东西搞得
1 楼
ak121077313
2011-04-08
额 其实我想知道是怎么抓取页面的。
发表评论
-
HTML5 Server-Sent Events With Java Servlets Example
2014-05-15 15:21 1347Since the dawn of modern web ... -
集群中session同步解决方式
2014-04-06 18:19 1183集群中几种session同步解决方案的比较(转) 在集群中 ... -
Extjs 几个常用控件
2012-11-22 13:01 2250NumberField控件 整数,小数,数字限制 ... -
solr 评分机制
2012-09-28 09:00 2199转自 http://blog.chenlb.com/20 ... -
Flyweight Pattern(享元模式)
2012-03-29 11:43 1360享元模式的特点是,复用我们内存中已存在的对象,降低系 ... -
ThreadPoolExecutor
2011-11-19 10:52 1509ThreadPoolExecutor是 jdk 1.5 ... -
spring mvc 分发器(DispatcherServlet)
2011-11-12 16:58 2723spring mvc 与其他的mvc框架一样都是一种 ... -
编码问题
2011-11-02 15:38 787JSP页面中的pageEncoding和contentTyp ... -
request session servletconfig servletcontext分析
2011-10-14 14:30 2259HttpServletRequest,HttpServle ... -
solr DataimportHanler fileld 出现null
2011-09-08 09:58 1110I'm wo ... -
solr DataimportHanler 效率对比
2011-09-08 09:28 111:用solrj 的api 调用封装SolrInputDocu ... -
solr DataimportHanler
2011-09-03 09:36 1227大多数的应用程序将数据存储在关系数据库、xml文件中 ... -
solr/home是个什么东西
2011-07-19 16:44 1873一直不太明白solr home是个什么东西,每次都 ... -
lucene多索引上的搜索
2011-04-09 15:35 1387上代码 import org.apache.lucene.d ... -
solr第二弹 关于“新蛋” “当当” “京东” 产品搜索的实现假想(1)
2011-04-09 09:39 80资料目前正在整理,很快会贴上去,主要内容 ... -
nutch 更新url.txt无法执行新的抓取
2010-04-19 16:59 1722nutch在使用中经常会修改url.txt中要抓取的目标网站 ... -
tomcat部署的三种方式
2010-04-06 10:19 1410长时间习惯于myeclipse部署tomcat竟然把最基本的 ... -
nutch配置详解
2010-03-11 16:47 3359配置软件: 1、 Java jd ... -
WebLogicDeployableObject' may not be null的问题
2009-11-11 16:23 2524第一次用weblogic 出现了一个很奇怪的问题,按 ...
相关推荐
类似京东,淘宝搜索自动补全功能。通过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中所有的知识点。 主讲内容 章节一...