jquery autocomplete实现solr查询字段自动填充并执行查询

news/2024/7/7 19:32:00

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

 

页面引入三个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>


  1. 引入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的时候,如下图:

当选择solr时,如下图:


转载于:https://my.oschina.net/HuifengWang/blog/307528


http://lihuaxi.xjx100.cn/news/246270.html

相关文章

几种开源工作流引擎的简单比较(转)

摘要&#xff1a;目前开源工作流引擎用的最多的是jbpm &#xff0c; 各种特性都不错&#xff0c; 文档也比较多&#xff0c; 下面只简单列举一下目前开源工作流引擎用的最多的是jbpm &#xff0c; 各种特性都不错&#xff0c; 文档也比较多&#xff0c; 下面只简单列举一下 其他…

Ubuntu系统下制作USB启动盘

在Linux系统下制作系统启动盘有两种方法&#xff1a; 用dd命令用Linux自带的图形界面工具 Startup Disk Creator 1. dd命令 查看挂载的U盘的设备名称 sudo fdisk -l如果U盘还在挂载状态&#xff0c;卸载它。否则&#xff0c;会提示设备或资源正忙。 umount /dev/u盘名格式化…

爆款AR游戏如何打造?网易杨鹏以《悠梦》为例详解前沿技术

7月31日&#xff0c;2018云创大会游戏论坛在杭州国际博览中心103B圆满举行。本场游戏论坛聚焦探讨了可能对游戏行业发展有重大推动的新技术、新实践&#xff0c;如AR、区块链、安全、大数据等。网易AR游戏生态合作负责人杨鹏表示&#xff0c;传统游戏模式趋同&#xff0c;AR游戏…

nexus 4 下 DualBootInstallation 安装 ubuntu touch

最近折腾ubuntu for phone ubuntu也算是雷声大雨点小&#xff0c;从edge手机开始&#xff0c;到说兼容一大部分谷歌机&#xff0c;到现在缩水说只适配nexus 4 节操掉了一地啊&#xff0c;对付这种情况&#xff0c;ubuntu touch也就可以只装着玩玩了&#xff0c;还好ubuntu 官方…

C++关键字volatile

1. 介绍 Volatile&#xff0c;词典上的解释为&#xff1a;易失的&#xff1b;易变的&#xff1b;易挥发的。那么用这个关键词修饰的C/C变量&#xff0c;应该也能够体现出”易变”的特征。大部分人认识Volatile&#xff0c;也是从这个特征出发。volatile提醒编译器它后面所定义…

谈谈最近独立做项目的一些事情,一些小经验,分享之!

可以说我是一个码农&#xff0c;一个纯正的码农&#xff0c;一个脱离了低级趣味的码农&#xff0c;时刻准备着要做一个对社会有贡献的码农。 平常最喜欢的事情就是在群里问问题&#xff0c;总是有那么一群好哥们在一起&#xff0c;这样可以享受装逼的乐趣。 谈了这么多无厘头的…

vSAN读者交流之1-要为不同时间的服务器选择合适的系统版本

近期在我的虚拟化群中&#xff0c;有两个问题比较典型&#xff1a;在比较老的服务器安装新的VMware ESXi 6.7或vCenter Server 6.7出错。在比较新的服务器安装比较旧的ESXi版本5.5出错。因为每个人的实验环境不同、条件不同&#xff0c;用不同的服务器做实验&#xff0c;或者为…

C++关键字noexcept

1. noexcept 指定符 1.1. 含义 指定函数是否抛出异常。预先知道函数不会抛出异常有助于简化调用该函数的代码&#xff0c;而且编译器确认函数不会抛出异常&#xff0c;它就能执行某些特殊的优化操作。 1.2. 使用方法 1.2.1. 接受布尔类型参数 noexcept(expression) // exp…