solr配置

一般要搜索的信息都是被存储在数据库里面的,但是我们不能直接搜数据库,所以只有借助Solr将要搜索的信息在搜索服务器上进行索引,然后在客户端供客户使用。

一、链接数据库

1. SQL配置

拿SQL Server 为例,需要先下载Sql Server的jar包,下载地址:

http://msdn.microsoft.com/en-us/data/aa937724.aspx

解压缩之后将sqljdbc4.jar复制到webapps\solr\WEB-INF\lib下,也就是本例的:

D:\apache-tomcat-7.0.57\webapps\solr\WEB-INF\lib

2. 建立查询

然后在D:\apache-tomcat-7.0.57\webapps\solr\solr_home\collection1\conf下面新建一个配置文件:data-config.xml

然后在本目录下编辑配置文件:solrconfig.xml

找到很多个requestHandler节点,在最下面增加:

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"><lst name="defaults"><str name="config">D:\apache-tomcat-7.0.57\webapps\solr\solr_home\collection1\conf\data-config.xml</str></lst></requestHandler>

要配置的内容就是刚才新建文件的路径。

3. 将初次下载的solr-4.10.2文件夹下的dist, contrib文件夹复制到TomCat根目录下:

4. 然后再次修改刚才编辑过的solrconfig.xml增加两个文件夹的配置并修改一些参数:

大约在75行默认有8个路径,但是路径不一定全对,顺着这个配置的路径去找文件夹,根据查找的层数修改这个路径配置,另增加一个新的配置,全文如下:

<lib dir="D:\apache-tomcat\contrib\extraction\lib" regex=".*\.jar" />

? <lib dir="D:\apache-tomcat\dist\" regex="solr-cell-\d.*\.jar" />

? <lib dir="D:\apache-tomcat\contrib\clustering\lib\" regex=".*\.jar" />

? <lib dir="D:\apache-tomcat\dist\" regex="solr-clustering-\d.*\.jar" />

? <lib dir="D:\apache-tomcat\contrib\langid\lib\" regex=".*\.jar" />

? <lib dir="D:\apache-tomcat\dist\" regex="solr-langid-\d.*\.jar" />

? <lib dir="D:\apache-tomcat\contrib\velocity\lib" regex=".*\.jar" />

? <lib dir="D:\apache-tomcat\dist\" regex="solr-velocity-\d.*\.jar" />

? <lib dir="D:\apache-tomcat\dist\" regex="solr-dataimporthandler-\d.*\.jar" />

这个配置是根据本机推导出来的,大家根据自己的实际情况去修改。

5. 将dist文件夹下的

复制到webapps\solr\WEB-INF\lib下。

6. 然后编辑

D:\apache-tomcat-7.0.57\webapps\solr\solr_home\collection1\conf\data-confing.xml文件,以本机MyBookShop数据库的Books表为例

配置如下:

<?xml version="1.0" encoding="UTF8"?><dataConfig><dataSource driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://localhost:1433;DatabaseName=MyBookShop" user="sa" password="111"/><document name="Info" pk="id"><entity name="zpxx"? transformer="ClobTransformer" pk="id"? ? ? ? ? ? ? ? query="SELECT? [ID],[Title] as name? FROM [MyBookShop].[dbo].[Books]"? ? ?

? ? ? ? ? ? ? ? deltaImportQuery="SELECT? [Id],[Title] as name? FROM [MyBookShop].[dbo].[Books] where [PublishDate] > '${dataimporter.last_index_time}'"?

? ? ? ? ? ? ? ? deltaQuery="SELECT? id FROM [MyBookShop].[dbo].[Books] where [PublishDate] > '${dataimporter.last_index_time}'"><field column="id"? ? ? name="id"/><field column="name"? ? ? name="name"/></entity></document></dataConfig>

此配置千万注意。

上述配置说明如下:

???? query是获取全部数据的SQL(solr从sql中获取那些数据),多列

???? deltaImportQuery是获取增量数据时使用的SQL(数据库新增数据追加到solr的数据),多列

???? deltaQuery是获取pk的SQL(数据库新增数据是,追加到solr的数据时的条件,根据id ,条件是最后一次获取的时间,${dataimporter.last_index_time,最后获取的时间}),一列

如需配置多列,步骤如:

1.先配置数据库查询信息data config:

<entity?name="zpxx"? transformer="ClobTransformer" pk="id"

?????????query="SELECT [ProductID] as ID,[ShopProductTitle] as title1,[SecondTitle] as title2,[ShopProductDescription] as descr? FROM [dbo].[ShopProduct]"??????

?????????deltaImportQuery="SELECT [ProductID] as ID,[ShopProductTitle] as title1,[SecondTitle] as title2,[ShopProductDescription] as descr? FROM [dbo].[ShopProduct] where [PublishDate] > '${dataimporter.last_index_time}'"??

?????????deltaQuery="SELECT [ProductID] as ID FROM [dbo].[ShopProduct] where [PublishDate] > '${dataimporter.last_index_time}'">???????????

????????<field?column="id"????? name="id"????? />

<field?column="title1"????? name="title1"????? />

<field?column="title2"????? name="title2"????? />

????????<field?column="descr"????? name="descr"????? />

?</entity>

?2. 配置schema信息(约120多行处):

<field?name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />

<field?name="sku" type="text_en_splitting_tight" indexed="true" stored="true" omitNorms="true"/>

<field?name="title1" type="text_ik" indexed="true" stored="true"/>

<field?name="title2" type="text_ik" indexed="true" stored="true"/>

<field?name="descr" type="text_ik" indexed="true" stored="true"/>

<field?name="cat" type="string" indexed="true" stored="true" multiValued="true"/>

?这样查处的结果就如:

"docs": [

??{

????"title1": "樱桃",

????"title2": "樱桃樱桃",

????"id": "1004",

????"descr": "<img?alt=\"\" src=\"9f531.jpg\"><img?alt=\"\" src=\"5.jpg\">",

????"_version_": 1503960451691577300

??},


保证SQL SERVER配置了外网访问即可。

配置到此基本结束。

二、建立索引

启动Solr,删除全部索引数据:

http://localhost:8080/solr/update/?stream.body=<delete><query>*:*</query></delete>&stream.contentType=text/xml;charset=utf-8&commit=true

停掉Solr,检查下是不是清空了:

开始创建新的索引,浏览器执行方式:

终止跑索引:http://localhost:8080/solr/collection1/dataimport?command=abort

开始索引:http://localhost:8080/solr/collection1/dataimport?command=full-import

增量索引 :http://localhost:8080/solr/collection1/dataimport?command=delta-import

建议学习时使用UI的方式进行更新,能看清运行过程:

需要等执行结束,可以点击【Refrush status】看结果:

Indexing completed. Added/Updated: 1076 documents. Deleted 0 documents. (Duration: 03s)

表示结束。

然后点击左边的查询检验索引结果:

出现查询结果表示创建成功。

三、更新索引、增加索引、删除索引

1. 更新数据:

我们先来搜索一个关键字“土豆”,这里全是计算机图书,不应该有土豆的。

然后将其中一个书籍的标题更新为“论土豆的栽培技术”

不更新索引是搜不到的。

执行增量更新:

http://localhost:8080/solr/dataimport?command=delta-import&clean=false&commit=true

然后去查询:

已经可以查询得到了。

2. 新增一个数据:“论苹果的艺术”


insert into [MyBookShop].[dbo].[Books]

(

[Title]

,[Author]

,[PublishDate]

,[WordsCount]

,[UnitPrice]

,[ContentDescription]

,[AurhorDescription]

,[EditorComment]

,[TOC]

)

SELECT '论苹果的艺术'

,[Author]

,[PublishDate]

,[WordsCount]

,[UnitPrice]

,[ContentDescription]

,[AurhorDescription]

,[EditorComment]

,[TOC]

FROM [MyBookShop].[dbo].[Books] where id=4942


新增结果如下:?

然后执行增量索引:

http://localhost:8080/solr/dataimport?command=delta-import&clean=false&commit=true

再查询:

发现新结果被查询出来了。

3. 删除数据

? 将苹果这条数据删除掉,仍然能够查询出来,执行单条索引删除:

7168&stream.contentType=text/xml;charset=utf-8&commit=true">http://localhost:8080/solr/update/?stream.body=<delete><id>7168</id></delete>&stream.contentType=text/xml;charset=utf-8&commit=true

再次查询就查不到了:


数据库下载

?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,100评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,308评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,718评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,275评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,376评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,454评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,464评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,248评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,686评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,974评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,150评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,817评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,484评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,140评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,374评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,012评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,041评论 2 351

推荐阅读更多精彩内容