利用Solr服务建立的站内搜索雏形---solr1

最近看完nutch后总感觉像好好捯饬下solr,上次看到老大给我展现了下站内搜索我便久久不能忘怀。总觉着之前搭建的nutch配上solr还是有点呆板,在nutch爬取的时候就建立索引到solr服务下,然后在solr的管理界面中选择query,比如在q选项框中将“*:*”改写为“title:安徽”,则在管理界面中就能看到搜索结果,可是这个与搜索引擎的感觉差远了,总感觉这些结果是被solr给套在他的管理界面中了,于是自己在网上搜索,也想整个站内搜索一样的东西,就算整不到那么炫,只要整到在solr的管理界面以外的地方出现搜索结果我就心满意足了……

网上海搜一番,发现有人做站内搜索的,但是也只是只言片语,没有很全的(后来发现及时很全的也不一定适用于你,因为搞IT的都具有时效性,谁知道你当前看到的一个类是不是n年前就被标记为过时了不能用了),但是也没办法,多看看结合一下,于是自己开始动手拼接组装程序了:

1.在程序中(我的环境是在Myeclipse中)要能够与solr服务器通信,毕竟你的索引是存在solr中的,然后就是加入搜索条件和要搜索的字段,再者就是一个查询类以及最后的结果的呈现,依次用到的是CommonsHttpSolrServer、SolrQuery、QueryResponse。

2.可是在组装好代码后运行是总是报错,也没有找到针对性的解决方案,但是调试的过程中把查询的条件取出来放到浏览器中查询是可以的,就是卡在QueryResponse qrsp = server.query(query); 这行,琢磨着应该是要换个纯净的工程,于是新建了个新的工程,按照网上要求的jar给导入,可是后来发现CommonsHttpSolrServer类总是无法导包,进入一看solrj的jar包下确实没有这个类,所以针对性的在网上搜索后发现该类在solr3.6版本后就被抛弃了,改用HttpSolrServer了,再次感谢链接:http://wenwen.sogou.com/z/q423004525.htm除了导入solr-solrj-4.6.0.jar以外还导入了以下jar包,这些jar都来源于自己下载的\solr-4.4.0\solr-4.4.0\dist\solrj-lib目录下的所有jar包

3.有了jar包之后,就开始运行程序了,我的solr是装在虚拟机里面,所以还要先到虚拟机中把tomcat服务启动(我的solr服务已经部署到tomcat服务器下了),然后在win7系统的浏览器中输入http://ip:8080/solr就可以访问我虚拟机里的solr了,大体主体部分如下:

String url="http://ip:8080/solr/";
HttpSolrServer server = new HttpSolrServer(url); 
server.setSoTimeout(3000); // socket read timeout 
server.setConnectionTimeout(1000); 
server.setDefaultMaxConnectionsPerHost(1000); 
server.setMaxTotalConnections(10); 
server.setFollowRedirects(false); // defaults to false 
server.setAllowCompression(true); 
server.setMaxRetries(1);

注意以上的ip为自己的ip,我的端口是8080,因为用的tomcat服务器,如果你没有部署到tomcat下,直接启动solr的example下的服务应该是8389,上面主要是与solr服务通信以及一些参数的设置;

SolrQuery query = new SolrQuery(); 
query.setQuery("title:安徽"); 
query.addField("content");
query.setStart(0); 
query.setRows(15);

上面的这些代码是生命一个查询类,并赋给查询条件以及查询字段

QueryResponse qrsp = server.query(query); 
SolrDocumentList docs = qrsp.getResults(); 
Iterator it = docs.iterator(); 
while (it.hasNext()) { 
System.out.println(it.next()); 
}

这段代码是接收相应的搜索结果以及遍历显示打印搜索结果。

虽然以上算不得什么搜索引擎,也没有任何界面的显示,但是我已很欣慰,因为都已经能搜索了,离我的小百度还远么(开玩笑的^_^)下一步准备先看看solrj具体是怎么应用的,每个部分都如何使用的摸索弄个搜索引擎的模样出来过过瘾。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

crontab设置导致的服务器进程异常问题 (r10笔记第4天)

前几天的时候,有个同事问我一个问题,大体的意思是突然收到报警,服务器的进程数翻了好几倍,其实那个服务器也没有任何操作。所以想让我帮忙看看。 他自己也做...

37460
来自专栏深度学习计算机视觉

Qt+opencv+EasyPR(车牌识别系统,从配置环境到成功运行)

最近在东软睿道实训搞一个车牌识别系统,所用材料为Qt+opencv+EasyPR,从配环境到成功运行历时几天颇为艰难,这里写篇经验贴,手把手教你~ 作者:张俊怡...

74530
来自专栏FreeBuf

JIS-CTF靶机+Kioptrix靶机渗透

最近一直在down各种CTF靶机玩,本次分享的2个靶机因较基础,故合并成一篇文章发表,本文章仅为初学者练手学习使用,大神们勿喷,感谢各位大佬!

17540
来自专栏deed博客

充分利用4G 空间 C8815 修改DATA分区,扩大存储空间,重新分配内置存储空间

22440
来自专栏芋道源码1024

为什么我们做分布式要用 Redis ?

绝大部分写业务的程序员,在实际开发中使用 Redis 的时候,只会 Set Value 和 Get Value 两个操作,对 Redis 整体缺乏一个认知。这里...

13030
来自专栏Danny的专栏

关于VB6.0中控件加载的难题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

24040
来自专栏FreeBuf

微软对外披露两个0day漏洞详情

微软近日对外披露了两个0day漏洞详情,其中一个漏洞存在Adobe阅读器中,可被利用导致任意代码执行;另一个漏洞则允许任意代码在Windows kernel内存...

8210
来自专栏一只程序汪的自我修养

使用requirejs编写模块化代码

27050
来自专栏信安之路

一道 CTF 题 get 到的新姿势

本文是从一个 CTF 题目中学到的一个新姿势,下面对我的学习做一个记录总结,给大家分享一下,希望大家多多参与一起分享学习。

12000
来自专栏FreeBuf

如何写一个你自己的Web集群式渗透系统

一个功能完善可以自定义的渗透系统可以帮助你省下很多的时间来思考目标站点的弱点,本文章就是教你怎么搭建一个Web入口的集群式渗透系统。 0×00 介绍 不知道大...

24860

扫码关注云+社区

领取腾讯云代金券