最近刚做完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中添加字段

<fieldname="suggestion"type="string"indexed="true"stored="true"termVectors="true"multiValued="true"/>

(2)把需要搜索简写的字段使用拷贝

<copyFieldsource="nickName"dest="suggestion"/>
<copyFieldsource="userName"dest="suggestion"/>
(3)、修改solrconfig.xml.添加以下配置


<searchComponent class="solr.SpellCheckComponent" name="suggest">
<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">suggestion</str>
<!-- the indexed field to derive suggestions from -->
<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>
</searchComponent>
<requestHandler class="org.apache.solr.handler.component.SearchHandler"
name="/suggest">
<lst name="defaults">
<str name="spellcheck">true</str>
<str name="spellcheck.dictionary">suggest</str>
<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>
<queryConverter name="phraseQueryConverter"
class="org.apache.solr.spelling.SpellingQueryConverter"/>
solr会自动把拼音检查放到
(3)如果请求道数据为以下东西说明配置成功

solr+ajax智能拼音详解---solr跨域请求的更多相关文章

  1. 详解使用postMessage解决iframe跨域通信问题

    这篇文章主要介绍了详解使用postMessage解决iframe跨域通信问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  2. ios – 如何使用Objective C类中的多个参数调用Swift函数?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  3. ios – Swift:递归值类型

    我有一个结构,我想要一个结构类型的全局变量?这个例子本质上是我实际创建的结构的简化版本.但是,它会抛出错误:有没有办法解决这个问题?

  4. Swift疑点解决2

    关于Swift中的String类型,String是一个结构体类型包含字符串的unicode但是长度没法算,同样没有length方法。因为Nsstring是OC中的类型,但是苹果工程师做了很好的兼容。还有Swift里一下非常好的方法如varops3=ops.map{$0.description}

  5. 玩转swift字符串——Advanced

    最近在尝试学一些iOSswift开发,要做一个“四则运算计算器”,其中涉及到很多字符串运算,终于在不断查阅文档和stackoverflow的情况下完成。inreverse){printlneachChar}字符串拼接//拼接字符串型str+="Hello"//拼接非字符串型varchCharacter="!"))字符串分割varstr6"welcometoplayswift"//以空格作为分割依据str6.componentsSeparatedByString"")varstr7"welcometopla

  6. swift开发笔记9 - 正向和反向页面传参

    在storyboa里segue是这样的:首先看考勤页面(主页面)如何给备注页面传参:在考勤页面(主页面)的viewcontroller中找到prepareForSegue方法,这个方法由xcode自动生成,用于在使用segue跳转前,做一些处理动作:实际上是通过修改segue的目标页面的某个类属性,从而达到传参的目的。

  7. Swift利用闭包反向传值

    写个Demo来用闭包实现下控制器反向传值界面十分简单,点击按钮进入第二个控制器,在textfield中输入文字后返回,主页面的label文字便自动更改。首先按照开发逻辑实现第二个控制器的闭包函数:定义个闭包类型,需要传递的参数为String而且注意返回值是Void然后就是声明一个方法用来保存传入的闭包,并且在将要退出控制器的时候传出textfield的文字:回到第一个控制器,在prepareForSegue方法中获得第二个控制器然后执行刚写的方法:大功告成~~

  8. Swift快速入门二基本数据类型

    相关文章Swift快速入门(一)第一个Swift程序1.变量和常量声明常量和变量Swfit是强类型的语言,Swift要求所有的变量和常量必须先声明后使用。就像Swift的其他类型一样,整数类型采用大写命名法。此外Swift还支持对无符号整数的支持。整数数值表现形式Swift整数数值有4种表示方式:十进制:默认的就是十进制整数。Swift提供了两种有符号浮点数类型:Double表示64位浮点数。

  9. swift 02 基本数据类型

    就像Swift的其他类型一样,整数类型采用大写命名法。此外Swift还支持对无符号整数的支持。整数数值表现形式Swift整数数值有4种表示方式:十进制:默认的就是十进制整数。Swift提供了两种有符号浮点数类型:Double表示64位浮点数。

  10. swift命令行项目SwiftBank学习

    新建名为SwiftBank的OSXComandline工程,会自动生成main.swift,再新建(+N)两个文件User.swift和Utils.swift内容分别为:main.swiftUtils.swiftUser.swift程序的入口不是main函数,而是main.swift文件,定义在这个文件中的代码会被顺次执行.总共有两屏的Menu外层是WelcomescreenMenu,内层是登录后

随机推荐

  1. xe-ajax-mock 前端虚拟服务

    最新版本见Github,点击查看历史版本基于XEAjax扩展的Mock虚拟服务插件;对于前后端分离的开发模式,ajax+mock使前端不再依赖后端接口开发效率更高。CDN使用script方式安装,XEAjaxMock会定义为全局变量生产环境请使用xe-ajax-mock.min.js,更小的压缩版本,可以带来更快的速度体验。

  2. vue 使用 xe-ajax

    安装完成后自动挂载在vue实例this.$ajaxCDN安装使用script方式安装,VXEAjax会定义为全局变量生产环境请使用vxe-ajax.min.js,更小的压缩版本,可以带来更快的速度体验。cdnjs获取最新版本点击浏览已发布的所有npm包源码unpkg获取最新版本点击浏览已发布的所有npm包源码AMD安装require.js安装示例ES6Module安装通过Vue.use()来全局安装示例./Home.vue

  3. AJAX POST数据中文乱码解决

    前端使用encodeURI进行编码后台java.net.URLDecoder进行解码编解码工具

  4. Koa2框架利用CORS完成跨域ajax请求

    实现跨域ajax请求的方式有很多,其中一个是利用CORS,而这个方法关键是在服务器端进行配置。本文仅对能够完成正常跨域ajax响应的,最基本的配置进行说明。这样OPTIONS请求就能够通过了。至此为止,相当于仅仅完成了预检,还没发送真正的请求呢。

  5. form提交时,ajax上传文件并更新到&lt;input&gt;中的value字段

  6. ajax的cache作用

    filePath="+escape;},error:{alert;}});解决方案:1.加cache:false2.url加随机数正常代码:网上高人解读:cache的作用就是第一次请求完毕之后,如果再次去请求,可以直接从缓存里面读取而不是再到服务器端读取。

  7. 浅谈ajax上传文件属性contentType = false

    默认值为contentType="application/x-www-form-urlencoded".在默认情况下,内容编码类型满足大多数情况。在这里,我们主要谈谈contentType=false.在使用ajax上传文件时:在其中先封装了一个formData对象,然后使用post方法将文件传给服务器。说到这,我们发现在JQueryajax()方法中我们使contentType=false,这不是冲突了吗?这就是因为当我们在form标签中设置了enctype=“multipart/form-data”,

  8. 909422229_ajaxFileUpload上传文件

    ajaxFileUpload.js很多同名的,因为做出来一个很容易。我上github搜AjaxFileUpload出来很多类似js。ajaxFileUpload是一个异步上传文件的jQuery插件传一个不知道什么版本的上来,以后不用到处找了。语法:$.ajaxFileUploadoptions参数说明:1、url上传处理程序地址。2,fileElementId需要上传的文件域的ID,即的ID。3,secureuri是否启用安全提交,默认为false。4,dataType服务器返回的数据类型。6,error

  9. AJAX-Cache:一款好用的Ajax缓存插件

    原文链接AJAX-Cache是什么Ajax是前端开发必不可少的数据获取手段,在频繁的异步请求业务中,我们往往需要利用“缓存”提升界面响应速度,减少网络资源占用。AJAX-Cache是一款jQuery缓存插件,可以为$.ajax()方法扩展缓存功能。

  10. jsf – Ajax update/render在已渲染属性的组件上不起作用

    我试图ajax更新一个有条件渲染的组件。我可以确保#{user}实际上是可用的。这是怎么引起的,我该如何解决呢?必须始终在ajax可以重新呈现之前呈现组件。Ajax正在使用JavaScriptdocument.getElementById()来查找需要更新的组件。但是如果JSF没有将组件放在第一位,那么JavaScript找不到要更新的内容。解决方案是简单地引用总是渲染的父组件。

返回
顶部