spring-data-solr的配置及使用(一)

Spring Data Solr就是为了方便Solr的开发所研制的一个框架,其底层是对SolrJ(官方API)的封装。

 

首先得有一个solr服务器,具体配置方法见https://blog.csdn.net/weixin_42333583/article/details/82079012

solr的配置步骤总结:

第一步:将solr的war包放到tomcat的webapps目录下,然后启动tomcat,这时就将war进行解压,此时访问localhost:8080/solr是可以访问的,但是仅仅将war包解压远远不行,solr工程下没有日志相关的jar,所以需要将日志相关的jar也放到解压后solr的lib目录下

第二步:将solr下载包里面example里面的solr(此目录是索引目录)将其改名为solrhome后拷贝到跟tomcat平级的目录中

第三步:配置solrhome的路径到tomcat中.找到解压war包后的solr,找到里面的solr,web.xml,在里面配置一下solrhome的位置

<env-entry>
    <env-entry-name>solr/home</env-entry-name>
    <env-entry-value>d:\solrhome</env-entry-value>
    <env-entry-type>java.lang.String</env-entry-type>
</env-entry>

第四步:重启tomcat  ,访问solr目录就可以访问了

 

在solr中加上分词器ik的步骤总结:

通过以上步骤,solr其实已经可以使用,但是solr自带的分词器太烂了,所以我们需要在solr中配置另外一款比较好的分词器ik分词器

配置ik分词器只需要在solrhome里面的分词库也就是collection里面有一个配置文件叫schema.xml

在里面配以下内容

<fieldType name="text_ik" class="solr.TextField">
    <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>

然后此时你想怎么用就在分词器的后面配一些field就可以

配置域的分类

要想将mysql等硬盘数据库的内容放到内存数据库,就需要先在内存数据库的schema.xml中配置对应的字段及属性才可以保存进去.

solr给我们提供了3中域帮助我们将硬盘数据库的内容映射到内存数据库中

 

普通域作用:对应mysql等数据库中的字段

复制域作用:将多个普通域的放一起,便于搜索,例如搜索框可能搜索不同的字段,放复制域便于管理.

动态域作用:某些字段有时候会发生变化,例如在mysql的字段中有时候存在,有时候多一些,有时候少一些,不确定,这时候就要用动态域

(1)普通域

域的常用属性:

  • name:指定域的名称

  • type:指定域的类型

  • indexed:是否索引

  • stored:是否存储

  • required:是否必须

  • multiValued:是否多值

例子: 

<field name="item_goodsid" type="long" indexed="true" stored="true"/>
<field name="item_title" type="text_ik" indexed="true" stored="true"/>
<field name="item_price" type="double" indexed="true" stored="true"/>

(2) 复制域  复制域里面多了一个属性multiValued="true"  其他的就是复制过来的,这个域都不保存,只是引用

<field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
<copyField source="item_title" dest="item_keywords"/>
<copyField source="item_category" dest="item_keywords"/>
<copyField source="item_seller" dest="item_keywords"/>
<copyField source="item_brand" dest="item_keywords"/>

(3)动态域  动态域使用不同的标签, 另外name那边有* ,* 表示的就是动态的, 当数据库用的时候还需要在pojo里面对应本文件中的 相应name.

 

<dynamicField name="item_spec_*" type="string" indexed="true" stored="true" />    

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值