本文共 2447 字,大约阅读时间需要 8 分钟。
本文转自:http://blog.csdn.net/wangzhaodong001/article/details/8529090
最近刚做完solr的ajax智能拼音。总结一下。
前端:jQueryAutoComplete插件。插件详见http://download.csdn.net/detail/wangzhaodong001/5018263
后端:solr自带suggest。拼音简写功能
效果图
1、前端解析(客户端)
$("#top_search_content").autocomplete("http://192.168.0.126:5080/space/suggest?wt=json&json.wrf=?", {dataType:'jsonp',width: 300,multiple: true,matchContains: true,multipleSeparator: " ",//分隔符error:function(data){ alert("error begin");console.log(data);alert('error end');},success: function(data) {var autocompleteData = data.spellcheck.suggestions[1].suggestion+"";var parsed = options.parse && options.parse(autocompleteData) || parse(autocompleteData);cache.add(term, parsed);success(term, parsed);}});
(1)http://192.168.0.126:5080/space/suggest?wt=json&json.wrf=? 访问地址
wt:表示返回为json串
json.wrf:使用jsonp跨域请求格式。注意问号。solr官方提供回调函数。问号会自动识别回调函数。有的文章写得是json.wrf=callback。之后自定义一个callback回调函数。这样的话。success函数就不会执行。我就一直纠结这个问题。之后把回调函数去掉。就行了。
其他都是一些jQueryAutocomplate的配置。
(2)因为返回数据为:所以需要解析
所以在success中加入var autocompleteData = data.spellcheck.suggestions[1].suggestion+"";
简单修改一下parse方法就行 var rows = data.split("\n"); 换成var rows = data.split(",");即可。
客户端处理完成
2、solr服务端
(1)、在schema.xml中添加字段
<field name="suggestion" type="string" indexed="true" stored="true" termVectors="true" multiValued="true"/>
(2)把需要搜索简写的字段使用拷贝
string suggest org.apache.solr.spelling.suggest.Suggester org.apache.solr.spelling.suggest.tst.TSTLookup suggestion 0.0001 spellchecker freq true true suggest true false 10 true suggest
solr会自动把拼音检查放到
(3)如果请求道数据为以下东西说明配置成功