Solr的基本使用

来源:happy_meng

blog.csdn.net/happy_meng


schema.xml

Field和fieldType(重点)

schema.xml,在SolrCore的conf目录下,它是Solr数据表配置文件,它定义了加入索引的数据的数据类型的。主要包括FieldTypes、Fields和其他的一些缺省设置。

field:进行索引,需要创建document,document中包括 了很多的field(域)。

field属性:是否索引、是否存储、是否分词 ,是否多值multiValued

multiValued:该Field如果要存储多个值时设置为true,solr允许一个Field存储多个值,比如存储一个用户的好友id(多个),商品的图片(多个,大图和小图),通过使用solr查询要看出返回给客户端是数组:

Fieldtype:在solr中对每个Field都有一个Type类型。

在Solr中进行索引、搜索时需要用哪些field需要提前在schema.xml文件中定义!!!!

通过界面查看 solrCore中有哪些field被定义:

比如:

filed的name:name

indexed:是否索引,true表示要索引,索引的目的为了搜索

stored:是否存储,存储的目的是为了从索引文件读取数据

type:text_general

主键(重点)

Solr在维护索引时要根据主键进行维护,比如创建索引没有指定主键,报如下错误:

如何指定solr的主键:

在schema.xml配置id

Solr中默认定义唯一主键key为id域,如下:

id

Solr在删除、更新索引时使用id域进行判断,也可以自定义唯一主键。

注意在创建索引时必须指定唯一约束。

copyField复制域

copyField复制域,可以将多个Field复制到一个Field中,以便进行统一的检索:

比如,输入关键字要搜索title标题和内容content这两个域时,要用到复制域

定义目标域:

必须要使用:multiValued=”true”

将以下的域复制到目标域中:

如果在搜索时,搜索text域,solr会分别从以上cat、name、manu、features、includes这域中搜索,类似lucene中组合 域 搜索。

dynamicField

使用 solr时要定义很多field比较麻烦,可以定义一种动态域,动态域没有具体的域名是定义一个规则,比如:name 为*_i。

当创建索引,指定field名称匹配上规则solr就执行成功,比如:动态域*_i,只要以_i结尾 的就可以索引创建成功。


安装中文分词器

IKAnalyzer部署

将 Ikanalyzer的jar拷贝到Solrcore中

将IKAnalyzer2012FF_u1.jar拷贝到 solr\contrib\IKAnalyzer\lib下

在solrconfig.xml中配置加载IKanalyzer的jar,添加配置:

配置扩展词库文件:

在Tomcat的webapps/solr/WEB-INF/下创建classes目录

将IKAnalyzer.cfg.xml、ext_stopword.dic mydict.dic copy到

Tomcat/webapps/solr/WEB-INF/classes下

注意:ext_stopword.dic 和mydict.dic必须保存成无BOM的utf-8类型。

修改schema.xml文件添加新的fieldType及Field测试

添加fieldType

自定义Field:


自定义业务系统Field

要使用Solr去实现业务系统站内搜索功能,需要在solrCore中schema.xml文件中自定义field。

需求

要使用solr实现电商网站中商品搜索。

电商中商品信息在mysql数据库中存储了,将mysql数据库中数据在solr中创建索引。

需要在solr的schema.xml文件定义商品Field。

定义步骤

先确定定义的商品document的field有哪些?

可以根据mysql数据库中商品表的字段来确定:

products商品表:

商品document的field包括:pid、name、catalog、catalog_name、price、description、picture

先定义Fieldtype:

solr本身提供的fieldtype类型够用了不用定义新的了。

再定义Field:

pid:商品id主键

使用solr本身提供的:


SorlJ创建索引

SorlJ介绍

Solr是一个全文检索的服务,对外提供webservice服务,webservice使用的http协议。

Solr作为一个服务端,同时也提供很多的不同编程语言的客户端,供程序员开发使用。

SorlJ安装

solrj就是一推api,即jar包。

业务系统的应用程序(javaEE程序)通过solrJ提供的api调用solr服务。

下载的solr的zip包中就有solrj的jar:

要使用solrJ需要哪些jar包?

jar包明细:

solr-4.10.3\dist\solrj-lib*

solr-4.10.3\dist\ solr-solrj-4.10.3.jar

solr-4.10.3\example\lib\ext*

junit包

Solrj索引维护

1、添加及更新索引

2、删除索引


数据导入处理器

dataimport-Handler介绍

solr提供dataimport-Handler数据导入处理器,工作流程:

1、solr通过dataimport-Handler查询关系数据库中的数据

2、对查询到的数据创建索引

上边的过程是自动化完成的。

可以通过此dataimport-Handler,批量将关系数据库中的数据创建索引到solr索引库中。

第一步:加载dataimport的jar包

将solr\dist\ solr-dataimporthandler-4.10.3.jar拷贝至solr\contrib\dataimporthandler

配置solrconfig.xml加载jar包:

第二步:加载mysql数据驱动包

方法同上,将mysql数据库驱动的jar拷贝至solr\contrib\databaseDriver下

配置solrconfig.xml加载jar包:

第三步:配置dataimport导入数据

创建data-config.xml文件,存放在SolrCore的conf目录

第四步:修改solrconfig.xml,添加requestHandler

测试数据导入


solrj进行搜索

solr的查询语法

1、q - 查询关键字,必须的,如果查询所有使用。

2、fq - (filter query)过虑查询,作用:在q查询符合结果中同时是fq查询符合的,例如:

请求fq是一个数组(多个值)

过滤查询价格从1到40的记录。

也可以在“q”查询条件中使用product_price:[1 TO 40],如下:

也可以使用“*”表示无限,例如:

40以上:product_price:[40 TO *]

40以下:product_price:[* TO 40]

3、sort - 排序,

格式:sort=+

猜你喜欢

转载自blog.csdn.net/qq_38375620/article/details/82154888