热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Solr6Suggest(智能提示)

1、介绍Solr从1.4开始便提供了检查建议,检索建议目前是各大搜索的标配应用,主要作用是避免用户输入错误的搜索词,同时将用户引导到相应的

  1、介绍

    Solr从1.4开始便提供了检查建议,检索建议目前是各大搜索的标配应用,主要作用是避免用户输入错误的搜索词,同时将用户引导到相应的关键词搜索上。通常,我们将其称为搜索联想。

  其效果如图所示。在Solr中,实现该功能的模块叫做suggest。

    

  2、配置

    配置manage-schema

<fieldType name&#61;"text_mmseg4j_simple" class&#61;"solr.TextField" positionIncrementGap&#61;"100"><analyzer><tokenizer class&#61;"com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode&#61;"simple"/>analyzer>fieldType><field name&#61;"text" type&#61;"text_mmseg4j_simple" termVectors&#61;"true" indexed&#61;"true" stored&#61;"true"/><field name&#61;"suggestion" type&#61;"text_mmseg4j_simple" indexed&#61;"true" stored&#61;"true" termVectors&#61;"true" multiValued&#61;"true" /><copyField source&#61;"text" dest&#61;"suggestion" />

 

  配置solrconfig.xml

<searchComponent class&#61;"solr.SpellCheckComponent" name&#61;"suggest"><str name&#61;"queryAnalyzerFieldType">text_spellstr><lst name&#61;"spellchecker"><str name&#61;"name">suggeststr><str name&#61;"classname">org.apache.solr.spelling.suggest.Suggesterstr><str name&#61;"lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookupstr><str name&#61;"field">suggestionstr><float name&#61;"threshold">0.0001float><str name&#61;"spellcheckIndexDir">spellcheckerstr><str name&#61;"comparatorClass">freqstr><str name&#61;"buildOnOptimize">truestr>lst>searchComponent><requestHandler class&#61;"org.apache.solr.handler.component.SearchHandler"name&#61;"/suggest"><lst name&#61;"defaults"><str name&#61;"spellcheck">truestr><str name&#61;"spellcheck.dictionary">suggeststr><str name&#61;"spellcheck.onlyMorePopular">truestr><str name&#61;"spellcheck.extendedResults">falsestr><str name&#61;"spellcheck.count">10str><str name&#61;"spellcheck.collate">truestr>lst><arr name&#61;"components"><str>suggeststr>arr>requestHandler><queryConverter name&#61;"phraseQueryConverter" class&#61;"org.apache.solr.spelling.SpellingQueryConverter"/>

 

  3、重启solr&#xff0c;索引数据

     

  4、效果预览

    

 

  5、java代码查询

private static void getSuggest(String message) throws SolrServerException, IOException{SolrQuery params &#61; new SolrQuery();params.set("qt", "/suggest");
// params.setQuery("中国");
params.setQuery(message);QueryResponse response &#61; null;response &#61; solr.query(params);String suggest &#61; response.toString();suggest &#61; suggest.replace("&#61;",":");System.out.println(suggest);JSONObject obj &#61; new JSONObject(suggest);Stack stObj &#61; new Stack();stObj.push(obj);Map resultMap &#61;new HashMap();JsonToMap(stObj,resultMap);if(resultMap.containsKey("suggestion")){System.out.println("suggestion&#xff1a;"&#43;resultMap.get("suggestion"));}}/*** &#64;Author&#xff1a;sks* &#64;Description&#xff1a;把json对象数据存储在map以键值对的形式存储&#xff0c;只存储叶节点* &#64;Date&#xff1a;*/private static void JsonToMap(Stack stObj,Map resultMap) throws SolrServerException, IOException{if(stObj &#61;&#61; null && stObj.pop() &#61;&#61; null){return ;}JSONObject json &#61; stObj.pop();Iterator it &#61; json.keys();while(it.hasNext()){String key &#61; (String) it.next();//得到value的值Object value &#61; json.get(key);//System.out.println(value);if(value instanceof JSONObject){stObj.push((JSONObject)value);//递归遍历
JsonToMap(stObj,resultMap);}else {resultMap.put(key, value);}}}

 



推荐阅读
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • AFNetwork框架(零)使用NSURLSession进行网络请求
    本文介绍了AFNetwork框架中使用NSURLSession进行网络请求的方法,包括NSURLSession的配置、请求的创建和执行等步骤。同时还介绍了NSURLSessionDelegate和NSURLSessionConfiguration的相关内容。通过本文可以了解到AFNetwork框架中使用NSURLSession进行网络请求的基本流程和注意事项。 ... [详细]
author-avatar
清新之乄风666
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有