智能提示(三)facet 聚合属性(类别、标签)提示
来源:互联网 发布:淘宝上怎么投诉店铺 编辑:程序博客网 时间:2024/06/07 11:03
大概需求,solr实现以下类似京东的智能提示功能的方案,带有标签值、或者分类和短语的:
京东:
淘宝:
简单分析上图,在输入关键字部分商品含有特殊属性,分类,标签的时候 就给输入关键字提示 的下一个层级展示该标签。
用过solr的朋友,看到这个 全球购 第一时间会想到facet。
大概思路:
存储的时候,把相关的标签值、属性值、分类值和商品名称等信息(简称为商品画像) 存储到一个多值域xxx_field中。 理想切词状态下,切出 类似 以上 词(类似:笔记本电
脑超薄本,衣服 夏天 热卖,等)。
查询的时候,采用solr的faect前缀匹配和pivot机制查询。 facet.prefix、facet.pivot,piovt 的用法个人理解就是 就是按照多个维度进行分组查询,把多次faect查询集合成一次。
demo: 参考:http://mall.crecgec.com/,实现了 聚合物品所在分类。
参考词干分词器:
KeywordTokenizerFactory:这个分词器不进行任何分词!整个字符流变为单个词元。String域类型也有类似的效果,但是它不能配置文本分析的其它处理组件,比如大小写转
换。任何用于排序和大部分Faceting功能的索引域,这个索引域只有能一个原始域值中的一个词元。
<!-- 词干分词器 --> <fieldType name="suggest_text" class="solr.TextField" positionIncrementGap="100" > <analyzer> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.KeywordRepeatFilterFactory"/> <filter class="solr.PorterStemFilterFactory"/> <filter class="solr.LowerCaseFilterFactory" /> <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> </analyzer> </fieldType> <!-- 搜索建议分词 --><fieldType name="Word_text" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true"> <analyzer type="index"> <!-- 不管什么内容,整句当成一个关键字 --> <tokenizer class="solr.KeywordTokenizerFactory" /> <!-- 同义词 --> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" /> <!-- 停止词 --> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopword.dic" enablePositionIncrements="true" /> <!-- 小写过滤 --> <filter class="solr.LowerCaseFilterFactory" /> <!-- 关键字 --> <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt" /> <!-- 拆字 --> <filter class="solr.WordDelimiterFilterFactory"generateWordParts="1" generateNumberParts="1" catenateWords="1"catenateNumbers="1" catenateAll="0" /><!-- 词干抽取算法 --><filter class="solr.PorterStemFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.KeywordTokenizerFactory" /> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopword.dic" enablePositionIncrements="true" /> <filter class="solr.LowerCaseFilterFactory" /> <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt" /> <filter class="solr.WordDelimiterFilterFactory"generateWordParts="1" generateNumberParts="1" catenateWords="0"catenateNumbers="0" catenateAll="0" /><!-- 词干抽取算法 --><filter class="solr.PorterStemFilterFactory"/><!-- 去除重复词 --><filter class="solr.RemoveDuplicatesTokenFilterFactory" /> </analyzer> </fieldType>
简单solrj代码:
//设置查询参数 SolrQuery query=new SolrQuery(); query.setParam("q", "*:*"); query.setStart(0); query.setRows(0); query.setParam("facet.pivot", "suggest,cate_id_3"); query.setParam("f.suggest.facet.prefix", map.get("word").toString()); query.setRequestHandler("/suggestFacet"); QueryResponse rsp= server.query(query); NamedList<List<PivotField>> namedList=rsp.getFacetPivot();
0 0
- 智能提示(三)facet 聚合属性(类别、标签)提示
- myeclipse 提示xml 标签属性
- myeclipse 提示xml 标签属性
- solr智能提示 suggest(基于提示词文本做智能提示)
- C#实现智能提示(提示补全)功能
- HTML5学习笔记第一节(智能提示和视频音频标签)
- 智能提示(一) Solr (suggest)
- 使MyEclipse智能提示(简单的)
- VC++学习(VS2010)--设置智能提示
- 关于智能提示(intellisense)重复(aardio)
- 关于智能提示(intellisense)重复(aardio)
- 输入框智能提示(一)
- 输入框智能提示(二)
- SpringMVC错误提示(三)
- solr智能提示 suggest(针对索引的某个字段建立索引词库做智能提示)
- 用solr的facet实现聚合标签
- Html提示框(fieldset标签)
- Android问题(一)Android Studio 提示"Error running app: No Android facet found for app"
- JBOSS常见错误以及一些部署错误的收集
- python脚本——合并word
- 抽象工厂模式
- 针对struct name结构做的简要变幻
- Tomcat8使用数据源的三种方式
- 智能提示(三)facet 聚合属性(类别、标签)提示
- 定时任务 Crontab命令 详解
- 中文编码规则一网打尽
- java jar文件的制作方法
- SpriteBuilder中CCMotionStreak提示图片文件找不到
- location.href、parent.location.href、top.location.href、 window.open
- 网站统计中的数据收集原理及实现
- framebuffer开发有我想象的那么简单吗
- OPENWRT-4G-移植-ALT3800