不久之前开发了一个项目,需要用到solr,因为所以在开始再网上查找资料,但是发现大部分的资料都是很片面的,要么就是只讲解solr如何安装的,要么就是只讲解solr的某一个部分的,而且很多都是资料都是一模一样的,一个人转载另一个人的,很难找到一个从solr配置,到与数据库连接在结合实际项目的,而且由于solr使用java开发的,所以现实中大多数的实例都是java版本的,.net版本的少之又少,所以一个.net开发人员在没有别人讲解的情况下学习solr是一件很吃力的事情,所以我想写出一个solr的系列教程,让一个没有solr基础的.net开发者,看我之后能能够知道solr原理,重要文件配置,大部分参数的意义,同时在.net项目中轻松使用.
什么是solr?
那么在学习之前我们要了解一下什么是solr先看一下,官方的解释:
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML,Json等文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML,JSONd等格式的返回结果, Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
官方定义就说到这里,这种定义网上一堆一堆的而且都是一样的,想了解的朋友可以自己去百度,基本上都是一个版本的,所以就不浪费大家的时间了,下面说一说我对solr的理解:
solr是将数据库的数据通过一定的索引规则,转化成容易检索的本地文件,文件的后缀名为.fdt,然后我们通过solr去访问这些本地文件(这些都是由solr内部完成的),从而加快索引速度,solr是java编写的,所以需要运行在tomcat服务器上,我们可以通用http请求的方式去访问solr,并获取数据.
solr 到底能干什么?
solr主要是实现大数据的站内搜索的,举个例子吧,当有一张表有上千万数据时,有一个字段你存储的是文章,现在要求你找出文章内容带有"博客园"的数据,这时你怎么办,用like查询?,那估计得查到第二天,solr就可以很好的解决问题,用solr的方式查询,最多也不会超过1秒钟.优化做的好的话都是毫秒级的
在说一点题外话,solr其实主要是配置相应的文件,这对于很多.net程序员来说,很陌生,因为我们总是习惯使用现成的,封装好的东西来使用,久而久之,就容易变懒,一碰见稍微麻烦点的配置就觉得很难(这是很多.net程序员的通病),我之前再网上指导过一个想学solr的.net程序员,他上来就来个一句话,有没有现成的例子,给我一份,然后我说没有,说这个需要在tomcat中配置很多xml文件,实际与代码结合的其实非常的少,solr的大部分东西就是在配置上,然后这个程序员就几乎放弃了对solr学习,之后的就简单的说了几句谈话就结束了.
第一节我们来讲解solr的安装与配置(这个基本和其他人的都是一样的)
因为solr是用java 开发的,所以需要运行在tomcat中(无论是什么项目,.net的项目也要部署在tomcat,或者Nginx),那么第一步我们就要先安装jdk(这里我安装的的jdk1.7),与tomcat(选择的是tomcat7),这两个的安装就不在这里细讲了,网上一查一大堆
1.下载Tomcat与solr并解压(安装前先装jdk)
Tomcat解压后磁盘路径为C:/Program Files/Apache Software Foundation/Tomcat 7.0(路径随意).
2.启动Tomcat服务器
浏览器输入: http://localhost:8080
这步操作是为了操作是为了在Tomcat/conf目录下生成Catalina/localhost目录,这个文件会在接下来使用.
3. 在官网上下载solr文件包 我这下载的是solr-4.7.2
将solr部署到Tomcat
a) 复制solr-4.7.2目录example/solr到Tomcat的根目录下
b) 复制solr-4.7.2目录dist/solr-4.7.2.war到Tomcat的webapps/solr.war(solr-4.7.2.war重命名为solr.war);
c) 复制solr-4.7.2目录example/lib/ext下的所有jar到Tomcat的lib下,同时将example/resources下的log4j.properties文件也复制到Tomcat的lib下;
d) 在Tomcat/conf/Catalina/localhost下创建solr.xml文件,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<Context docBase="webapps/solr.war" debug="0" crossContext="true">
<Environment name="solr/home" type="java.lang.String" value="c:/Program Files/Apache Software Foundation /Tomcat7/solr" override="true"/>
</Context>
4.重新启动Tomcat服务器,在浏览器输入http://localhost:8080/solr 查看服务,出现如下界面就安装成功了.
安装IK分词器
1.http://code.google.com/p/ik-analyzer/downloads/detail?name=IK%20Analyzer%202012FF_hf1.zip&can=2&q=
2.复制下面ik分词解压包下面的如下三个文件到Tomcat7\webapps\solr\WEB-INF\lib\文件夹下面:
IKAnalyzer.cfg.xml、IKAnalyzer2012FF_u1.jar、stopword.dic
3.修改Tomcat7\solr\collection1\conf\文件夹下的schema.xml.在<types></types>
中增加如下内容:
<!--配置IK分词器—name是名称 下面可以选择分词器-->
<fieldType name="text_ik" class="solr.TextField">
<!--索引时候的分词器-->
<analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
<!--查询时候的分词器-->
<analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
4.启动Tomcat,在浏览器中输入http://localhost:8080/solr ,在页面左侧菜单中选择Core为collection1,点击Analysis(漏斗形状)菜单,在右侧页面Filed Value文本框中输入要测试分词的中文串.
5.在Field Value下方,Analyse FieldName/FieldType中选择text_ik(我这里起的名字是 text_cn),然后点击左侧Analyze Value按钮,就能看到分词结果。
效果图如下:
ok以上就是solr的安装,这只是第一步,它还依然什么也做不了,下节我们将讲解solr的配置文件.
qq群: 424259523
solr与.net系列课程(一)solr的安装与配置的更多相关文章
-
solr与.net系列课程(八)solr中重跑索引的注意事项
solr与.net系列课程(八)solr中重跑索引的注意事项 我们如果在项目中使用solr,那肯定就是把数据库中的数据跑进solr服务器中,solr有两种操作一种是新建索引,一种是增量索引,这里我们来 ...
-
solr与.net系列课程(七)solr主从复制
solr与.net系列课程(七)solr主从复制 既然solr是解决大量数据全文索引的方案,由于高并发的问题,我们就要考虑solr的负载均衡了,solr提供非常简单的主从复制的配置方法,那么下面 ...
-
solr与.net系列课程(六)solr定时增量索引与安全
solr与.net系列课程(六)solr定时增量索引与安全 solr增量索引的方式,就是一个Http请求,但是这样的请求显然不能满足要求,我们需要的是一个自动的增量索引,solr官方提供了一个定时器 ...
-
solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据
solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据 上一节我们完成了solr连接数据库,细心的朋友会发现一个问题,就是solr其实和语言没有任何关系,配置完成后任何语 ...
-
solr与.net系列课程(三)solr连接数据库
solr与.net系列课程(三)solr连接数据库 上一章直接讲述的配置文件把大部分人看的很迷惑,大家都想听的是solr到底是怎么用的,好,这一节我们就开始链接数据库,首先讲一下连接之前都要配置哪些 ...
-
solr与.net系列课程(二)solr的配置文件及其含义
solr与.net系列课程(二)solr的配置文件及其含义 本节内容还是不会涉及到.net与数据库的内容,但是不要着急,这都是学时solr必学要掌握的东西,solr可不是像其他的dll文件一样,只需 ...
-
solr与.net系列课程(九)solr5.1的配置
solr与.net系列课程(九)solr5.1的配置 最近一些园友来咨询solr5.1的配置方式,然后我就去官网下载了个最新版本的solr,发现solr5.0以后solr的下载包里的内容发生的变化,移 ...
-
solr与.net系列课程(五)solrnet的使用
solr与.net系列课程(五)solrnet的使用 最近因项目比较忙,所以这篇文章出的比较晚,离上一篇文章已经有半个月的时间了,这节课我们来学下一下solr的.net客户端solrnet 出处 ...
-
RabbitMQ学习系列(二): RabbitMQ安装与配置
上一篇,简单介绍了RabbitMQ的情况还有一些相关的概念,这一篇,会讲讲 RabbitMQ安装与配置. 1.安装 Rabbit MQ 是建立在强大的Erlang OTP平台上,因此安装RabbitM ...
随机推荐
-
烂泥:nginx同时支持asp.net与php
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 经过两天的实验,终于让nginx同时支持asp.net与php了.下面就把具体的配置过程记录如下. 注意:本次实验OS:centos6 64bit. 尽 ...
-
iOS技巧,宏定义
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnoAAAPCCAYAAADvRHWgAAAAAXNSR0IArs4c6QAAAZ1pVFh0WE1MOm
-
用C++ 设计一个不能被继承的类
http://blog.sina.com.cn/s/blog_69d9bff30100odlz.html 在Java 中定义了关键字final ,被final 修饰的类不能被继承.但在C++ 中没有f ...
-
OLAP 大表和小表并行hash join
一个表50MB 一个表10GB 50M表做驱动表,放在PGA里 这时候慢在对对 10g 的全表扫描 对10个G扫描块 需要开并行 我有这样一个算法 一个进程 读 50mb 8进程 来 扫描 10gb ...
-
Python 基础学习20151201
L = [ ['Apple','Google','Microsoft'], ['Java','Python','Ruby','PHP'], ['Adam','Bart','Lisa'] ] #打印Ap ...
-
linux bash 和 sh的区别
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt189 Linux 中的 shell 有很多类型,其中最常用的几种是: Bou ...
-
myEclipse 配置tomcat清除缓存
-Xms256m -Xmx512m -XX:MaxNewSize=64m -XX:MaxPermSize=128m
-
分析*(五)- Vector.java
注:玩的是JDK1.7版本 一: 先上类图,从类图上看和 ArrayList.java 非常相像,可查看 分析*(一)-ArrayList.java 二:然后看源码,发现和 ArrayList.ja ...
-
Salesforce小知识:累计汇总字段类型
累计汇总字段类型的定义 Salesforce中可以在两个对象之间建立关系.一个对象的某一条记录可以有若干条相关联的其他对象记录. 累计汇总字段可以将这些相关联的记录中的某些字段值汇总起来,显示给用户. ...
-
C# 给类做事件的一般做法
https://docs.microsoft.com/zh-cn/dotnet/standard/events/how-to-raise-and-consume-events 第一个示例演示如何引发和 ...