设为首页 收藏本站
查看: 1307|回复: 0

[经验分享] jquery autocomplete实现solr查询字段自动填充并执行查询

[复制链接]

尚未签到

发表于 2016-12-16 11:24:26 | 显示全部楼层 |阅读模式
页面引入三个JS: 



  • <script type="text/javascript" src="js/jquery-1.7.2.js"></script>  
  •         <script type="text/javascript" src="js/jquery-ui.js"></script>  
  •                 <script type="text/javascript" src="js/json.js"></script>  

 



  • 引入JQUERY UI的CSS文件  

 



  • <link rel="stylesheet" href="css/redmond/jqstyle.css" type="text/css"></link></head>  


 



  • $(function() {  
  •       
  •     function log( message ) {  
  •             $( "<div/>" ).text( message ).prependTo( "#log" );  
  •             $( "#log" ).scrollTop( 0 );  
  •         }  
  •       
  •     //http://localhost:8088/solr-src/core0/suggest?q=so&wt=json  
  •     //搜索引擎关键字自动填充  
  •     $( "#city" ).autocomplete({  
  •             source: function( request, response ) {  
  •                 $.ajax({  
  •                       
  •                     url: "http://localhost:8088/solr-src/core0/suggest",  
  •                     dataType: "json",  
  •                     data: {  
  •                         wt:"json",  
  •                         q: request.term  
  •                     },  
  •                     success: function( data ) {  
  •                           
  •                         response(data.spellcheck.suggestions[1].suggestion)  
  •                     /*  
  •                         response( $.map( data, function( item ) {  
  •                             return {  
  •                                 label: item.username,  
  •                                 value: item.username  
  •                             }  
  •                         }));  
  •                     */    
  •                     }  
  •                 });  
  •             },  
  •             minLength: 2,//输入两个字符才会发送请求  
  •               
  •             select: function( event, ui ) {  
  •                 log( ui.item ?  
  •                     "Selected: " + ui.item.label :  
  •                     "Nothing selected, input was " + this.value);  
  •                 //执行搜索  
  •                 $.getJSON("http://localhost:8088/solr-src/core0/select",  
  •                 { "q": ui.item.label, "version": "2.2","start":0,"rows":10,"indent":"on","wt":"json" },  
  •                  function(result) {  
  •                  //显示搜索结果,这里简单显示json字符串  
  •                  $("div#content").append(JSON.stringify(result.response.docs));  
  •                   
  •                   
  •             });   
  •                   
  •             },  
  •             open: function() {  
  •                 $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );  
  •             },  
  •             close: function() {  
  •                 $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );  
  •             }  
  •               
  •         });  
  • });  

  
 
  html代码:
 



  • <div class="ui-widget">  
  •     <label for="city">Your city: </label>  
  •     <input id="city" />  
  • </div>  
  •   
  • <div class="ui-widget" style="margin-top:2em; font-family:Arial">  
  •     Result:  
  •     <div id="log" style="height: 200px; width: 300px; overflow: auto;" class="ui-widget-content"></div>  
  • </div>  
  •   
  • </div>  

  
solrconfig.xml中配置拼写检查和自动补全组件:
 



  • <searchComponent name="spellcheck" class="solr.SpellCheckComponent">  
  •   
  •     <str name="queryAnalyzerFieldType">textSpell</str>  
  •   
  •     <!-- Multiple "Spell Checkers" can be declared and used by this  
  •          component  
  •       -->  
  •   
  •     <!-- a spellchecker built from a field of the main index, and  
  •          written to disk  
  •       -->  
  •     <lst name="spellchecker">  
  •       <str name="name">default</str>  
  •       <str name="field">name</str>  
  •       <str name="buildOnCommit">true</str>  
  •       <str name="spellcheckIndexDir">spellchecker</str>  
  •       <!-- uncomment this to require terms to occur in 1% of the documents   
  •            in order to be included in the dictionary  
  •         -->  
  •       <!-- 
  •         <float name="thresholdTokenFrequency">.01</float> 
  •       -->  
  •     </lst>  
  •   
  •     <!-- a spellchecker that uses a different distance measure -->  
  •     <!--  
  •        <lst name="spellchecker">  
  •          <str name="name">jarowinkler</str>  
  •          <str name="field">spell</str>  
  •          <str name="distanceMeasure">  
  •            org.apache.lucene.search.spell.JaroWinklerDistance  
  •          </str>  
  •          <str name="spellcheckIndexDir">spellcheckerJaro</str>  
  •        </lst>  
  •      -->  
  •   
  •     <!-- a spellchecker that use an alternate comparator   
  •   
  •          comparatorClass be one of:  
  •           1. score (default)  
  •           2. freq (Frequency first, then score)  
  •           3. A fully qualified class name  
  •       -->  
  •     <!--  
  •        <lst name="spellchecker">  
  •          <str name="name">freq</str>  
  •          <str name="field">lowerfilt</str>  
  •          <str name="spellcheckIndexDir">spellcheckerFreq</str>  
  •          <str name="comparatorClass">freq</str>  
  •          <str name="buildOnCommit">true</str>  
  •       -->  
  •   
  •     <!-- A spellchecker that reads the list of words from a file -->  
  •     <!--  
  •        <lst name="spellchecker">  
  •          <str name="classname">solr.FileBasedSpellChecker</str>  
  •          <str name="name">file</str>  
  •          <str name="sourceLocation">spellings.txt</str>  
  •          <str name="characterEncoding">UTF-8</str>  
  •          <str name="spellcheckIndexDir">spellcheckerFile</str>  
  •        </lst>  
  •       -->  
  •   </searchComponent>  
  •   
  •   <!-- A request handler for demonstrating the spellcheck component.    
  •   
  •        NOTE: This is purely as an example.  The whole purpose of the  
  •        SpellCheckComponent is to hook it into the request handler that  
  •        handles your normal user queries so that a separate request is  
  •        not needed to get suggestions.  
  •   
  •        IN OTHER WORDS, THERE IS REALLY GOOD CHANCE THE SETUP BELOW IS  
  •        NOT WHAT YOU WANT FOR YOUR PRODUCTION SYSTEM!  
  •          
  •        See http://wiki.apache.org/solr/SpellCheckComponent for details  
  •        on the request parameters.  
  •     -->  
  •        
  •   <requestHandler name="/spell" class="solr.SearchHandler" startup="lazy">  
  •     <lst name="defaults">  
  •       <str name="df">text</str>  
  •       <str name="spellcheck.onlyMorePopular">false</str>  
  •       <str name="spellcheck.extendedResults">false</str>  
  •       <str name="spellcheck.count">1</str>  
  •     </lst>  
  •     <arr name="last-components">  
  •       <str>spellcheck</str>  
  •     </arr>  
  •   </requestHandler>  
  •      
  •       
  •     <searchComponent class="solr.SpellCheckComponent" name="suggest">  
  •     <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>  
  •       <!-- Alternatives to lookupImpl:   
  •            org.apache.solr.spelling.suggest.fst.FSTLookup   [finite state automaton]  
  •            org.apache.solr.spelling.suggest.fst.WFSTLookupFactory [weighted finite state automaton]  
  •            org.apache.solr.spelling.suggest.jaspell.JaspellLookup [default, jaspell-based]  
  •            org.apache.solr.spelling.suggest.tst.TSTLookup   [ternary trees]  
  •       -->  
  •       <str name="field">text</str>  <!-- the indexed field to derive suggestions from -->  
  •       <float name="threshold">0.005</float>  
  •       <str name="buildOnCommit">true</str>  
  • <!-- 
  •       <str name="sourceLocation">american-english</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.count">5</str>  
  •       <str name="spellcheck.collate">true</str>  
  •     </lst>  
  •     <arr name="components">  
  •       <str>suggest</str>  
  •     </arr>  
  •   </requestHandler>  

  
当输入so的时候,如下图:
DSC0000.png

  当选择solr时,如下图:
DSC0001.png





  •  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-315150-1-1.html 上篇帖子: ansj分词器和solr结合的零零碎碎 下篇帖子: solr Exception:Exception while setting value Caused by: java.lang.IllegalArgume
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表