转载请注明出处:http://lucien-zzy.iteye.com/admin/blogs/2008291
在完成solr的搭建后(solr搭建可以参考这篇:http://lucien-zzy.iteye.com/blog/2002087)
我们来看看如何实现suggest输入拼音提示中文的功能:
这里我是基于http://lucien-zzy.iteye.com/blog/2002087 这篇来搭建的。
第一步:将这俩jar包放入 F:\winsolr\solr_home\solr\collection1\contrib\extraction\lib 中
jar包见附件
第二步:配置 solrconfig.xml 文件,添加以下内容
<searchComponent name="spellcheck" class="solr.SpellCheckComponent"> <str name="queryAnalyzerFieldType">text_spell</str> <lst name="spellchecker"> <str name="name">default</str> <!--这里指明需要根据哪个字段的索引为依据进行拼写检查。现配置 名为 name 的字段--> <str name="field">text</str> <!--拼写检查索引的目录--> <str name="spellcheckIndexDir">spellchecker</str> <!--当commit的时候,对拼写检查索引进行构建。(只有构建后,拼写检查才有效果)--> <!--当然,也可以选择在optimize的时候,进行构建。那么只需要将"buildOnCommint"换为 "buildOnOptimize"--> <str name="buildOnCommit">true</str> <str name="classname">solr.FileBasedSpellChecker</str> <str name="sourceLocation">spellings.txt</str> <str name="characterEncoding">UTF-8</str> <!-- <str name="name">direct</str> <str name="field">text</str> <str name="classname">solr.DirectSolrSpellChecker</str> <str name="distanceMeasure">internal</str> <float name="accuracy">0.5</float> <int name="maxEdits">2</int> <int name="minPrefix">1</int> <int name="maxInspections">5</int> <int name="minQueryLength">2</int> <float name="maxQueryFrequency">0.01</float> --> </lst> </searchComponent> <requestHandler name="/spell" class="solr.SearchHandler" startup="lazy"> <!--默认参数--> <lst name="defaults"> <str name="spellcheck.onlyMorePopular">true</str> <str name="spellcheck.extendedResults">false</str> <!--配置拼写检查提示结果的个数(可以根据需要适当加大)--> <str name="spellcheck.count">3</str> </lst> <arr name="last-components"> <str>spellcheck</str> </arr> <!-- <lst name="defaults"> <str name="spellcheck.dictionary">direct</str> <str name="spellcheck">on</str> <str name="spellcheck.collate">true</str> <str name="spellcheck.collateExtendedResults">true</str> </lst> <arr name="last-components"> <str>spellcheck</str> </arr> --> </requestHandler> <searchComponent name="suggest" class="solr.SpellCheckComponent"> <str name="queryAnalyzerFieldType">string</str> <lst name="spellchecker"> <str name="name">suggest</str> <str name="classname">org.apache.solr.spelling.suggest.Suggester</str> <str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str> <str name="field">text</str> <float name="threshold">0.0001</float> <str name="spellcheckIndexDir">spellchecker</str> <str name="comparatorClass">freq</str> <str name="buildOnOptimize">true</str> <!--<str name="buildOnCommit">true</str>--> </lst> <!--用于输入拼音提示功能--> <lst name="spellchecker"> <str name="name">pysuggest</str> <str name="classname">shentong.tsearch.spelling.suggest.Suggester</str> <str name="lookupImpl">shentong.tsearch.spelling.suggest.py.PYLookup</str> <str name="field">text</str> <float name="threshold">0.0001</float> <str name="pySuggestIndexDir">suggestIndex</str> <str name="comparatorClass">freq</str> <str name="buildOnOptimize">true</str> <!--<str name="buildOnCommit">true</str>--> </lst> </searchComponent> <requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy"> <lst name="defaults"> <str name="spellcheck">true</str> <str name="spellcheck.dictionary">suggest</str> <!-- 这个参数告诉solr,当查询的结果数多于设定的count数时,返回点击数更多的那些 --> <str name="spellcheck.onlyMorePopular">true</str> <str name="spellcheck.extendedResults">false</str> <str name="spellcheck.count">10</str> <str name="spellcheck.collate">true</str> </lst> <arr name="components"> <str>suggest</str> </arr> </requestHandler>
第三步:增加索引
第四步:结合Ajax 实现suggest(这里只贴出主要的solrj查询代码)
JSONObject json = new JSONObject(); //获取请求的实际URL相对于请求的serlvet的url的路径。 String requesturl = request.getPathInfo(); //检索建议 if(requesturl.indexOf("/suggest") != -1){ String data = request.getParameter("data"); if(!StringUtil.empty(data)){ String url = ConfigUtil.getStringValue("solr_url"); SolrjTool solr = SolrjTool.getinstence(); solr.init(url); //创建查询对象 SolrQuery query = new SolrQuery(); query.set("q", data); //set查询关键词 query.set("qt", "/suggest"); //set查询类型为 suggest query.set("spellcheck.count", "10"); //set 查询出的总条数 query.set("spellcheck.dictionary", "pysuggest"); query.set("spellcheck", "on"); query.set("spellcheck.build", "true"); //执行查询 QueryResponse res = solr.execseQuery(query); SpellCheckResponse spellCheckResponse = res.getSpellCheckResponse(); if (spellCheckResponse != null) { //获取Suggestion集合 List<Suggestion> suggestionList = spellCheckResponse.getSuggestions(); List<String> suggestedList = new ArrayList<String>(); for (Suggestion suggestion : suggestionList) { //获取索引库集合 List<String> suggestedWordList = suggestion.getAlternatives(); for (int i = 0; i < suggestedWordList.size(); i++) { String word = suggestedWordList.get(i); suggestedList.add(word); } } if(suggestedList.size() >0 ){ json.put("code", "1"); json.put("data", suggestedList); }else{ //没有结果 json.put("code", "1001"); } }else{ //没有结果 json.put("code", "1001"); } }else{ //没有检索项 json.put("code", "1000"); } out.println(json.toString()); }
第五步:访问页面查询测试,如图:
相关推荐
ajax自动提示功能,能快速提高用户输入的效率
JavaScript Suggest自动补全的输入框下拉提示类
search-suggest 可快速创建你的搜索提示功能 /搜索自动补全功能。功能说明把句子分词后缓存转换成拼音缓存把句子分词后缓存当你输入英文 或者中文的时候,可以从缓存里获取匹配值返回使用 标签:search
JQuery插件Suggest来做那些机票预订网站中的输入智能提示功能,这个功能对于用户体验性来说,挺不错的,用于实现类似百度的智能提示功能也是一个不错的选择。
文本框Input文字自动完成Suggest提示插件,一款Suggest搜索提示插件,暗藏有淘宝首页、有啊首页、Google搜索首页、来点广告搜索的众多下拉提示,实际上演示效果与其真实网站上的相关无几,使用了Yahoo网站的一个搜索...
ajax实现输入提示(类似百度和Google的输入提示) 用法非常简单: 1、在jsp页面引入autosuggest.js文件 2、建一个text文本框 3、写js代码: <script> new actb("tb", loadAllMessage("suggest" , ""), null); 4、这...
前不久做淘宝首页的性能优化,淘宝原来用的是 YUI AutoComplete, 但因其庞大的体积(压缩后 30k, 还需依赖 30k 的 datasource 组件),同时对中文输入法的支持不好(这是英美人士永远难以发现的 bug),使得 YUI ...
标签:apache、lucene、suggest、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...
KISSY.Suggest 仿百度、淘宝输入提示补全功能的组件及实例!值得下载看看!资源免费,大家分享!! 更多免费资源 http://ynsky.download.csdn.net/
飞飞模仿google(suggest)下拉提示框v1.6.rar
仿google提示,有延时1秒或几秒,由自己控制
AJAX实现类Google Suggest效果 *测试平台:Firefox2.0,IE6.0,IE7.0 *演示地址:http://www.okajax.com/demo/suggest/ *:文件结构: index.htm:首页,展现效果 ajax_result.asp:ajax调用后台返回结果文件 result.asp:...
标签:apache、lucene、suggest、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...
自己改的一个简易Google Suggest搜索提示 功能可能不是很完善,有什么建议给我提下 staoml@qq.com
此小程序是模仿Google(sgguest)输入提示框所编写 亦可用于用户注册邮箱时的提示 此程序使用方便简单、易用灵活 且不限Asp、php、net 更新说明: 1.支持xhtml 2.兼容IE6,IE7,FF 3.支持input显示与value分离 4.支持...
NULL 博文链接:https://nopainnogain.iteye.com/blog/838608
NULL 博文链接:https://forever-xb-hotmail-com.iteye.com/blog/670313
google suggest 的实现,google suggest 的实现
自动补全例子基于php 非常简单易用 jquery suggest 自动补全插件演示 自动补全 jquery自动补全 jquery 输入提示