最近看完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具体是怎么应用的,每个部分都如何使用的摸索弄个搜索引擎的模样出来过过瘾。

友情赞助

如果你觉得博主的文章对你那么一点小帮助,恰巧你又有想打赏博主的小冲动,那么事不宜迟,赶紧扫一扫,小额地赞助下,攒个奶粉钱,也是让博主有动力继续努力,写出更好的文章^^。

    1. 支付宝                          2. 微信

                      

利用Solr服务建立的站内搜索雏形的更多相关文章

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

    最近看完nutch后总感觉像好好捯饬下solr,上次看到老大给我展现了下站内搜索我便久久不能忘怀.总觉着之前搭建的nutch配上solr还是有点呆板,在nutch爬取的时候就建立索引到solr服务下, ...

  2. 在ssh中利用Solr服务建立的界面化站内搜索---solr2

         继上次匆匆搭建起结合solr和nutch的所谓站内搜索引擎之后,虽当时心中兴奋不已,可是看了看百度,再只能看看我的控制台的打印出每个索引项的几行文字,哦,好像差距还是有点大……        ...

  3. 在ssh中利用Solr服务建立的界面化站内搜索

         继上次匆匆搭建起结合solr和nutch的所谓站内搜索引擎之后,虽当时心中兴奋不已,可是看了看百度,再只能看看我的控制台的打印出每个索引项的几行文字,哦,好像差距还是有点大……      简 ...

  4. hexo干货系列:(五)hexo添加站内搜索

    前言 本来想用百度站内搜索,但是没成功,所以改用swiftype,用起来还是很棒的,这里分享一下我的安装步骤 正文 注册 去swiftype官网注册个账号,然后登陆,对了不要去在意30天试用,30天过 ...

  5. 一步步开发自己的博客 .NET版(5、Lucenne.Net 和 必应站内搜索)

    前言 这次开发的博客主要功能或特点:    第一:可以兼容各终端,特别是手机端.    第二:到时会用到大量html5,炫啊.    第三:导入博客园的精华文章,并做分类.(不要封我)    第四:做 ...

  6. 站内搜索——Lucene +盘古分词

    为了方便的学习站内搜索,下面我来演示一个MVC项目. 1.首先在项目中[添加引入]三个程序集和[Dict]文件夹,并新建一个[分词内容存放目录] Lucene.Net.dll.PanGu.dll.Pa ...

  7. 基于lucene.net 和ICTCLAS2014的站内搜索的实现1

    Lucene.net是一个搜索引擎的框架,它自身并不能实现搜索.须要我们自己在当中实现索引的建立,索引的查找.全部这些都是依据它自身提供的API来实现.Lucene.net本身是基于java的,可是经 ...

  8. Lucene.net站内搜索—5、搜索引擎第一版实现

    目录 Lucene.net站内搜索—1.SEO优化 Lucene.net站内搜索—2.Lucene.Net简介和分词Lucene.net站内搜索—3.最简单搜索引擎代码Lucene.net站内搜索—4 ...

  9. 使用Lucene.NET实现简单的站内搜索

    使用Lucene.NET实现简单的站内搜索 导入Lucene.NET 开发包 Lucene 是apache软件基金会一个开放源代码的全文检索引擎工具包,是一个全文检索引擎的架构,提供了完整的查询引擎和 ...

随机推荐

  1. freeRTOS中文实用教程4--资源管理概述

    1.前言 多任务系统中存在一种潜在的风险.当一个任务在使用某个资源的过程中,即还没有完全结束对资源的访问时,便被切出运行态,使得资源处于非一致,不完整的状态 2.并发抢占导致错误的场景 (1)访问外设 ...

  2. 通过全备+relaylog同步恢复被drop的库或表

    MySQL 中drop 等高危误操作后恢复方法 实验目的: 本次实验以恢复drop操作为例,使用不同方法进行误操作的数据恢复. 方法: 利用master同步 伪master+Binlog+同步 利用b ...

  3. Centos6.5使用yum安装mysql——快速上手必备

    第1步.yum安装mysql [root@stonex ~]#  yum -y install mysql-server 安装结果: Installed:     mysql-server.x86_6 ...

  4. MVC 带扩展名的路由无法访问

    在MVC中,路由是必不可少的,而且MVC对Url的重写非常方便,只需要在路由中配置相应的规则即可.假如我们需要给信息详情页配置路由,代码如下: routes.MapRoute( name: " ...

  5. redis安全 (error) NOAUTH Authentication required

    Redis 安全 我们可以通过 redis 的配置文件设置密码参数,这样客户端连接到 redis 服务就需要密码验证,这样可以让你的 redis 服务更安全. 实例 我们可以通过以下命令查看是否设置了 ...

  6. js 、c# 编码解码

    escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@ ...

  7. 将日期或数据转换为char数据类型 TO_CHAR(x[[,c2],C3])

    TO_CHAR(x[[,c2],C3])[功能]将日期或数据转换为char数据类型[参数]x是一个date或number数据类型.c2为格式参数c3为NLS设置参数如果x为日期nlsparm=NLS_ ...

  8. PHP替换指定字符串

    在PHP中,有两个函数可以实现字符串替换,strtr()和str_repalce()函数. 首先我们简单了解下strtr()函数的定义及语法. strtr:转换指定字符. 两个语法: 第一种语法: s ...

  9. PE文件版本那些事儿

    发现文件的版本号很有意思,win7下右键属性显示两个版本号,分别是File Version 和 Product version.但使用vs编辑版本资源里面却有四处版本号,如下: 发现有以下区别,上面为 ...

  10. 如何批量的在django中对url进行用户登陆限制

    参考URL: https://blog.csdn.net/hanshengzhao/article/details/79540306?utm_source=blogxgwz0 1,首先定义一个内部有装 ...