使用最新 solr4.10 快速开发团购网站等垂直搜索网站

news/2024/5/9 14:14:27/文章来源:https://yanghuaiyuan.blog.csdn.net/article/details/39078269

说明:

solr 是一个非常完善的开源项目,非常优秀,他不紧紧是做个索引这么简单,而是可以做成一个垂直的网站,比如团购网站,快速搭建页面。
而且solr带了一个非常优秀的管理后台。可以查看管理,导入数据,重建索引,同步主从数据,非常强大。
这里主要展示的是solr 可以快速搭建一个团购网站,并且将代码做成demo放到github上面供大家学习参考。
代码修改的比较仓促还在不断完善。

1,环境搭建,使用solr4.10 版本

从apache 官方网站下载最新的 solr 4.10.0 http://lucene.apache.org/solr/

团购数据从 hao123 的官方网站接口找到的,大家都可以获得,公开的数据。

http://www.hao123.com/redian/api.htm  美团数据下载:http://www.meituan.com/api/deals/hao123 一共 1.27G 非常大,因为是没有压缩的xml数据,(使用htttp下载,用工具可能会被封。)。


将工程修改成maven的工程,因为不是开发solr而是使用solr,在example下面有个war包,解压缩到maven工程。



2,配置solr

下载的数据是xml的格式:

<urlset><url><loc>http://bj.meituan.com/deal/6330826.html?source=hao123</loc><data><display><website>美团网</website><siteurl>http://bj.meituan.com</siteurl><city>北京</city><sort>休闲娱乐</sort><title>【2店通用】CGV星星国际影城单人电影票1张,2D/3D可兑</title><image>http://p1.meituan.net/275.168/deal/201301/04/173144_2860489.jpg</image><startTime>1373040000</startTime><endTime>1377943200</endTime><value>100</value><price>30</price><rebate>3折</rebate><bought>13593</bought><spend_start_time>1373040000</spend_start_time><spend_close_time>1377964799</spend_close_time><longitude>116.490591</longitude><latitude>39.970472</latitude><collections>0</collections><type>2</type><soldout>no</soldout></display></data></url>....</urlset>

工程目录:


在工程根目录下面 有个solr文件夹,下面是solr的配置文件,其中一个子文件夹,tuan是团购的配置文件夹。
工程是用mave搭建的,扩展性更强。
根据美团的数据,将配置solr的数据文件。

参考:

http://forchenyun.iteye.com/blog/650372


配置 schema.xml


<?xml version="1.0" encoding="UTF-8" ?>
<schema name="example" version="1.5"><fields><field name="id" type="string" indexed="true" stored="true"required="true" multiValued="false" /><field name="title" type="text_general" indexed="true" stored="true" /><field name="image" type="string" indexed="false" stored="true" /><field name="value" type="double" indexed="false" stored="true" /><field name="price" type="double" indexed="true" stored="true" /><field name="rebate" type="double" indexed="true" stored="true" /><field name="bought" type="long" indexed="true" stored="true" /><field name="city" type="string" indexed="true" stored="true" /><field name="sort" type="string" indexed="true" stored="true" /><field name="loc" type="string" indexed="true" stored="true" /><field name="startTime" type="date" indexed="true" stored="true" /><field name="endTime" type="date" indexed="true" stored="true" /><!-- catchall field, containing all other searchable text fields (implemented via copyField further on in this schema --><field name="text" type="text_general" indexed="true" stored="false"multiValued="true" /><field name="_version_" type="long" indexed="true" stored="true" /></fields><uniqueKey>id</uniqueKey><copyField source="title" dest="text" /><types><fieldType name="string" class="solr.StrField"sortMissingLast="true" /><!-- boolean type: "true" or "false" --><fieldType name="boolean" class="solr.BoolField"sortMissingLast="true" /><fieldType name="int" class="solr.TrieIntField"precisionStep="0" positionIncrementGap="0" /><fieldType name="float" class="solr.TrieFloatField"precisionStep="0" positionIncrementGap="0" /><fieldType name="long" class="solr.TrieLongField"precisionStep="0" positionIncrementGap="0" /><fieldType name="double" class="solr.TrieDoubleField"precisionStep="0" positionIncrementGap="0" /><fieldType name="tint" class="solr.TrieIntField"precisionStep="8" positionIncrementGap="0" /><fieldType name="tfloat" class="solr.TrieFloatField"precisionStep="8" positionIncrementGap="0" /><fieldType name="tlong" class="solr.TrieLongField"precisionStep="8" positionIncrementGap="0" /><fieldType name="tdouble" class="solr.TrieDoubleField"precisionStep="8" positionIncrementGap="0" /><fieldType name="date" class="solr.TrieDateField"precisionStep="0" positionIncrementGap="0" /><fieldType name="tdate" class="solr.TrieDateField"precisionStep="6" positionIncrementGap="0" /><fieldtype name="binary" class="solr.BinaryField" /><fieldType name="pint" class="solr.IntField" /><fieldType name="plong" class="solr.LongField" /><fieldType name="pfloat" class="solr.FloatField" /><fieldType name="pdouble" class="solr.DoubleField" /><fieldType name="pdate" class="solr.DateField"sortMissingLast="true" /><fieldType name="random" class="solr.RandomSortField"indexed="true" /><fieldType name="text_ws" class="solr.TextField"positionIncrementGap="100"><analyzer><tokenizer class="solr.WhitespaceTokenizerFactory" /></analyzer></fieldType><fieldType name="text_general" class="solr.TextField"positionIncrementGap="100"><analyzer type="index"><tokenizer class="solr.StandardTokenizerFactory" /><filter class="solr.LowerCaseFilterFactory" /></analyzer><analyzer type="query"><tokenizer class="solr.StandardTokenizerFactory" /><filter class="solr.LowerCaseFilterFactory" /></analyzer></fieldType><!-- CJK bigram (see text_ja for a Japanese configuration using morphological analysis) --><fieldType name="text_cjk" class="solr.TextField"positionIncrementGap="100"><analyzer><tokenizer class="solr.StandardTokenizerFactory" /><!-- normalize width before bigram, as e.g. half-width dakuten combine --><filter class="solr.CJKWidthFilterFactory" /><!-- for any non-CJK --><filter class="solr.LowerCaseFilterFactory" /><filter class="solr.CJKBigramFilterFactory" /></analyzer></fieldType></types>
</schema>


配置:solrconfig.xml

<!-- 增加xml 数据导入 --><requestHandler name="/dataimport"class="org.apache.solr.handler.dataimport.DataImportHandler"><lst name="defaults"><str name="config">xml-data-config.xml</str></lst></requestHandler><requestHandler name="/browse" class="solr.SearchHandler"><lst name="defaults"><str name="echoParams">explicit</str><!-- VelocityResponseWriter settings --><str name="wt">velocity</str><str name="v.properties">velocity.properties</str><str name="v.contentType">text/html;charset=utf-8</str><str name="v.template">browse</str><str name="v.layout">layout</str><str name="title">团购网站demo</str><!-- Query settings --><str name="defType">edismax</str><str name="df">text</str><str name="mm">100%</str><str name="q.alt">*:*</str><str name="rows">32</str><str name="fl">*,score</str><!-- Faceting defaults --><str name="facet">on</str><str name="facet.field">city</str><str name="facet.field">sort</str><str name="facet.range">price</str><int name="f.price.facet.range.start">100</int><int name="f.price.facet.range.end">1500</int><int name="f.price.facet.range.gap">200</int><!-- Highlighting defaults --><str name="hl">on</str><str name="hl.fl">title</str><str name="hl.encoder">html</str><str name="hl.simple.pre"><font colr='red' ></str><str name="hl.simple.post"></font></str><str name="f.title.hl.fragsize">0</str><str name="f.title.hl.alternateField">title</str><!-- Spell checking defaults --><str name="spellcheck">on</str><str name="spellcheck.extendedResults">false</str><str name="spellcheck.count">5</str><str name="spellcheck.alternativeTermCount">2</str><str name="spellcheck.maxResultsForSuggest">5</str><str name="spellcheck.collate">true</str><str name="spellcheck.collateExtendedResults">true</str><str name="spellcheck.maxCollationTries">5</str><str name="spellcheck.maxCollations">3</str></lst><!-- append spellchecking to our list of components --><arr name="last-components"><str>spellcheck</str></arr></requestHandler>


配置:xml-data-import.xml

<dataConfig><script><![CDATA[function ReplaceLocAddId(row)    {var loc_1 = row.get('loc').split('/deal/');var loc_2 = loc_1[1].split('.html');var id = loc_2[0];row.put('id', id);//格式化时间.var sdf = new java.text.SimpleDateFormat('yyyy-MM-dd HH:mm:ss');//开始时间.row.put('startTime', com.demo.tuan.DateUtils.format(row.get('startTime')));//结束时间.row.put('endTime', com.demo.tuan.DateUtils.format(row.get('endTime')));//去掉折扣汉字.row.put('rebate', row.get('rebate').replace('折',''));return row;}]]></script><dataSource type="FileDataSource" encoding="utf-8" /><document><entity name="tuan" pk="loc"url="/data/workspace.freewebsys/solr4_demo/doc/meituan_hao123.xml"processor="XPathEntityProcessor" forEach="/urlset/url"transformer="script:ReplaceLocAddId,DateFormatTransformer"><field column="loc" xpath="/urlset/url/loc" commonField="true" /><field column="city" xpath="/urlset/url/data/display/city"commonField="true" /><field column="sort" xpath="/urlset/url/data/display/sort"commonField="true" /><field column="title" xpath="/urlset/url/data/display/title"commonField="true" /><field column="image" xpath="/urlset/url/data/display/image"commonField="true" /><field column="value" xpath="/urlset/url/data/display/value"commonField="true" /><field column="price" xpath="/urlset/url/data/display/price"commonField="true" /><field column="rebate" xpath="/urlset/url/data/display/rebate"commonField="true" /><field column="bought" xpath="/urlset/url/data/display/bought"commonField="true" /><field column="startTime" xpath="/urlset/url/data/display/startTime"dateTimeFormat="yyyy-MM-dd HH:mm:ss" commonField="true" /><field column="endTime" xpath="/urlset/url/data/display/endTime"dateTimeFormat="yyyy-MM-dd HH:mm:ss" commonField="true" /></entity></document>
</dataConfig>

配置好了,开始导入数据:管理后台,使用超级方便。界面也非常漂亮。



倒入数据成功。

3,修改页面显示

修改样式:将原始页面进行修改,套用别的团购网站样式。数据里面直接可显示图片等信息。
可以使用nginx 直接将 /tuan/browse 代理到线上部署,前端最好再加上一层varnish做页面缓存,性能更好。



solr 已经将很多东西集成进来了,比如分类数据,区间分类数据,数据推荐,相关推荐等,非常强大,越研究越有味道。


4,代码提交:


代码和配置已经上传到github上面了:

https://github.com/freewebsys/solr4_demo

包括全部代码,配置文件,本地就可以直接使用jetty运行。



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_791431.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

发现一个国外的学习网站

一个国外的学习网站 udacity.com 优达学成。 免费课程 https://cn.udacity.com/courses/all 全部的课程 里面有不少有意思的课程。 课程是英文的带中文翻译。 还有一个机器学习的课程&#xff0c;感觉好高大上啊。 总结 使用上有点不太方便。 本地化做的还不是很…

javascript ,从mozilla 官方网站学习语法,非常不错

本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/81153733 博主地址是&#xff1a;http://blog.csdn.net/freewebsys 1&#xff0c;关于mozilla 开发者 https://developer.mozilla.org/zh-CN/ 还有这么一个开发者中心呢&#xff0c;上面搜索写JavaScri…

pagespeed insights 上线了,可以通过web进行网站性能分析了

地址&#xff1a; https://developers.google.cn/speed/pagespeed/insights/ 分析下csdn网站&#xff1a; 功能挺多的&#xff0c;还不错。 可以进行参考&#xff0c;然后优化。提高访问速度。

中国大学MOOC(慕课) 一个不错的学习网站

https://www.icourse163.org/category/all 中国大学MOOC是由网易与高教社携手推出的在线教育平台&#xff0c;承接教育部国家精品开放课程任务&#xff0c;向大众提供中国知名高校的MOOC课程。在这里&#xff0c;每一个有意愿提升自己的人都可以免费获得更优质的高等教育。 央…

flutter(4):在linux 下安装flutter 环境,sdk,Android Studio ,从中文镜像网站下载,速度快,安装插件,调整bios使用x86镜像,写个hello world。

目录前言1&#xff0c;关于 flutter2&#xff0c;使用3&#xff0c;启动5&#xff0c;学习视频6&#xff0c;总结前言 相关arduino 全部分类&#xff1a; https://blog.csdn.net/freewebsys/category_8957746.html 本文的原文连接是: https://blog.csdn.net/freewebsys/articl…

图片切换onmouseover 事件

http://www.w3school.com.cn/htmldom/event_onmouseover.asp 定义和用法 onmouseover 时间会在鼠标指针移动到指定的对象上时发生。 语法 οnmοuseοver"SomeJavaScriptCode" 参数描述SomeJavaScriptCode必需。规定该事件发生时执行的 JavaScript。支持该事件的 HTM…

kotlin学习(2):android开发股票APP开发。先上github交友网站进行搜索,参考相关开源项目。然后进行二次开发、修改,不从零进行项目开发。

目录前言1&#xff0c;关于股票APP2&#xff0c;使用下载代码运行3&#xff0c;总结前言 本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/108718819 未经博主允许不得转载。 博主地址是&#xff1a;http://blog.csdn.net/freewebsys 1&#xff0c;关于…

手机网站按住放大图片_动辄上千的手机稳定器值不值?魔爪手机稳定器mini mx 499不香么...

现在什么最火&#xff1f;当然是小视频vlog了。随着抖音等短视频App的火爆&#xff0c;短视频就风靡全球了。录制短视频也从兴趣爱好演变成了多种职业形式&#xff0c;不仅能够满足个人记录还能够带来经济收益。那么怎样才能像vlog创作者一样录制高质量的短视频资源呢&#xff…

2018洛奇英雄传永恒最新服务器,洛奇英雄传:永恒官方网站-这一次让经典成为永恒...

《洛奇英雄传&#xff1a;永恒》公会篝火玩法介绍2017年05月16日公会是洛英手游的特色系统&#xff0c;在洛英手游中&#xff0c;公会玩法众多&#xff0c;既有着公会饮酒&#xff0c;公会篝火等休闲玩法&#xff0c;还有着斗争之塔&#xff0c;征战英雄等公会副本战斗&#xf…

摄影分享网站之导航栏

一. 图片展示 二.内容构成 该导航栏由一个大div标签里面包裹三个小div&#xff0c;分别用来放置logo,和搜索框加按钮&#xff0c;最后一个放置导航链接 &#xff0c;链接里实现下拉菜单。 1.logo logo部分比较简单&#xff0c;把图片放入设定好大小的div中&#xff0c;使用flo…

python编程游戏用什么软件好,推荐4个 Python 的编程游戏网站

简说Python号主老表&#xff0c;自学&#xff0c;分享Python&#xff0c;SQL零基础入门、数据分析、数据挖掘、机器学习优质文章以及学习经验。135篇原创内容公众号↑↑↑关注后"星标"简说Python人人都可以简单入门Python、爬虫、数据分析简说Python推荐本文内容来源…

java线程睡眠的方法_「thread.sleep」Java Thread之Sleep()使用方法总结 - seo实验室

thread.sleep一、API简介Thread.sleep()是Thread类的一个静态方法&#xff0c;使当前线程休眠&#xff0c;进入阻塞状态(暂停执行)&#xff0c;如果线程在睡眠状态被中断&#xff0c;将会抛出IterruptedException中断异常。。主要方法如下&#xff1a;【a】sleep(long millis) …

计算机科学与技术导论 网站,计算机科学与技术导论

????张小峰、贾世祥、柳婵娟、邹海林编著的《计算机科学与技术导论》以启迪科学思想、培育创新精神为目标&#xff0c;以知识为起点&#xff0c;以知识发现、发展和应用为主线&#xff0c;构建 计算机科学技术导论 课程的内容体系。包括理论产生、研究的动因、思想方法和理…

服务器错误信息暴露URL,访问网站提示An error occurred on the server when processing the URL的解决方法...

大家看到这个信息不要怕&#xff0c;这个就说明了你的iis7或iis7.5的下的网站有错误。只要找到具体的信息就可以了&#xff0c;跟iis6下的经典提示错误一样的。解决方法:An error occurred on the server when processing the URL. Please contact the system administrator在W…

html网站首页代码_如何在百度站长工具平台上进行“网站验证”

作为一名站长&#xff0c;在网站搭建以后&#xff0c;如果想要使用百度站长工具了解网站的相关数据&#xff0c;这时需要先到百度站长工具平台上验证您的网站。站长平台推荐站长添加主站(您网站的链接也许会使用www和非www两种网址&#xff0c;建议添加用户能够真实访问到的网址…

mysql 网页版管理工具_WP菜鸟建站25:怎样安装和打开phpMyAdmin数据库管理工具?...

wordpress程序是由PHP语言开发而的一个动态网站程序&#xff0c;所以&#xff0c;它拥有自己的mysql数据库。我们的wordpress网站的前端页面所展示的文字和图片信息&#xff0c;都是从这个mysql数据库中调用出来的。一般情况下&#xff0c;作为wordpress站长的我们&#xff0c;…

randint函数_静态网站利用云函数 SCF + API 网关访问自定义后端接口

本文介绍使用全静态页面的网站如何利用腾讯云的 SCFAPI 服务实现简单的后端接口&#xff0c;并提供了一个 Python 出题器的实例演示。相关服务介绍&#xff1a;云函数(Serverless Cloud Function&#xff0c;SCF)是腾讯云为企业和开发者们提供的无服务器执行环境&#xff0c;帮…

html 字加白色透明,如何给网站背景加一个白色的透明文字

如何给网站背景加一个白色的透明文字如何给网站背景加一个白色的透明文字&#xff0c;如果对你有帮助就看看吧。那么如何给网站背景添加呢?其实也很简单&#xff0c;只需要一些代码即可实现&#xff0c;这个代码呢也是站长在其他地方发现的&#xff0c;就感觉还不错就拿过来用…

基于SSM的模板项目运动网站(附源码链接)

基于SSM的体适能运动协会 基于SSM的体适能运动协会项目属于SSM的一个综合实例项目&#xff0c;很多类似的项目都可在上面进行扩展。整个项目包括前台与后台&#xff0c;它不仅包括前台资源的展示&#xff0c;也包含了后台数据的实时更新等。此项目适用于毕设也适用于地方机构网…

火狐firefox,IE,网站变灰变黑兼容代码

内容提要&#xff1a; 大家都知道在IE浏览器中&#xff0c;可以使用一段代码 body {filter: gray;} 用微软的滤镜代码将网站整体去色成为黑白灰色调效果&#xff0c;但是并不兼容firefox等其他非IE浏览器。大家都知道在IE浏览器中&#xff0c;可以使用一段代码 body {filter: g…