1、solr包结构介绍,solrCore的安装配置,solr部署到Tomcat,多solrCore配置,配置中文分词器,界面功能介绍,Schema.xml的基本使用,数据导入

简介: 一、下载solr,下载地址是:http://archive.apache.org/dist/lucene/solr/,选择自己想要的solr的版本,本项目使用的版本是4.10.3二、如果想下载Lucene,下载地址是: https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/java/三、其中solr-4.10.3的包结构如下:bin

一、下载solr,下载地址是:http://archive.apache.org/dist/lucene/solr/,选择自己想要的solr的版本,本项目使用的版本是4.10.3

二、如果想下载Lucene,下载地址是: https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/java/

三、其中solr-4.10.3的包结构如下:


bin

solr的脚本

contrib

solr为了增强自身的功能,所添加的扩展依赖包

dist

Solr  build过程中产生的war包和jar包,还有它的一些依赖包。

docs

文档

Example

例子目录

 

solr

配置了solr运行时的信息,它是一个标准的solrhome目录

 

Multicore

可以配置多个solrCore实例

 

Webapps

solr.war的目录

Licenes

版本信息

四、solrCore的安装配置

1.solrhome是一个目录,它是solr运行的主目录,它包括多个SolrCore目录,solrCore目录中就solr实例的运行配置文件和数据文件。

其中solrhome的结构如下,以solr-4.10.3为例进行说明:

 

Solrhome中可以包括多个solrCore,每个solrCore相互独立,而且可以单独对外提供搜索和索引服务。这个目录可以随意放置。比如我将这个文件放置在了:D:\installed\solr-resources\solrhome

其中solrfCore的目录结构如下:

目录说明:

conf

该solrcore的运行配置信息

data

在索引创建成功之后,这个目录将会出现。它主要存储了索引文件。

例如下面是我创建solrcore成功之后的目录结构:

其中conf的目录结构:

2.创建solrCore:

创建solrCore需要先准备solrhome:

拷贝D:\installed\solr-4.10.3\example\solr到D:\installed\solr-resources,并将solr名称改成solrhome

最终的内容结构如下:

五、solr部署到Tomcat

1:

Solr需要运行一个servlet容器,它默认通过了一个servlet容器,jetty(java写的),项目中大多使用的是Tomcat.

我的tomcat位置:


2: solr的war部署到Tomcat中。

其中solr的war位置是:D:\installed\solr-4.10.3\example\webapps

将solr.war拷贝到D:\installed\apache-tomcat-7.0.47\webapps,重启一下,当solr.war被解压完成之后删除solr这个war包。

 

3:添加扩展依赖包(日志包)

拷贝以下目录的扩展包

 

到D:\installed\apache-tomcat-7.0.47\webapps\solr\WEB-INF\lib:

 

4添加log4j的配置文件,拷贝以下的文件:

拷贝到以下目录:

5.在web.xml中指定solrhome的位置

找到web.xml


即:

<env-entry>

       <env-entry-name>solr/home</env-entry-name>

       <env-entry-value>D:\installed\solr-resources\solrhome</env-entry-value>

       <env-entry-type>java.lang.String</env-entry-type>

    </env-entry>

注意上面的env-entry-name不要动。下面的env-entry-value指定的是solrhome的路径

6.启动tomcat进行访问

即:点击D:\installed\apache-tomcat-7.0.47\bin\startup.bat

7.solrCore的配置

在solrCore的conf目录下有一个文件叫solrconfig.xml

下面这些配置主要是配置solrcore的扩展jar包,solr.install.dir表示solrcore的安装目录


修改如下:

 

其中的../../对应的目录:


把solr下载包中的contrib和dist文件拷贝到以下目录(其中contrib和dist文件就在解压后的solr-4.10.3文件夹下):



实际的代码如下:

<lib dir="${solr.install.dir:../..}/contrib/extraction/lib" regex=".*\.jar" />
  <lib dir="${solr.install.dir:../..}/dist/" regex="solr-cell-\d.*\.jar" />


  <lib dir="${solr.install.dir:../..}/contrib/clustering/lib/" regex=".*\.jar" />
  <lib dir="${solr.install.dir:../..}/dist/" regex="solr-clustering-\d.*\.jar" />


  <lib dir="${solr.install.dir:../..}/contrib/langid/lib/" regex=".*\.jar" />
  <lib dir="${solr.install.dir:../..}/dist/" regex="solr-langid-\d.*\.jar" />


  <lib dir="${solr.install.dir:../..}/contrib/velocity/lib" regex=".*\.jar" />
  <lib dir="${solr.install.dir:../..}/dist/" regex="solr-velocity-\d.*\.jar" />


  <lib dir="${solr.install.dir:../..}/contrib/dataimporthandler/lib" regex=".*\.jar"/>
  <lib dir="${solr.install.dir:../..}/contrib/db/lib" regex=".*\.jar"/>
将D:\installed\solr-4.10.3\dist中的solr-dataimporthandler-4.10.3.jar和solr-dataimporthandler-extras-4.10.3.jar放入到 D:\installed\solr-resources\contrib\dataimporthandler\lib中,将mysql-connector-java-5.1.7-bin.jar放入到 D:\installed\solr-resources\contrib\db\lib中,如果没有相应目录的话创建相应的目录


修改用于数据导入的配置文件中的内容:

修改D:\installed\solr-resources\solrhome\collection1\conf\data-config.xml,内容如下:

<?xml version="1.0" encoding="UTF-8" ?>  
<dataConfig>   
<dataSource type="JdbcDataSource"   
 driver="com.mysql.jdbc.Driver"   
 url="jdbc:mysql://localhost:3306/solr"
 user="root"   
 password="123456"/>
<document>   
<entity name="product" query="SELECT pid,name,catalog,catalog_name,price,description,picture FROM products">
<field column="pid" name="id"/> 
<field column="name" name="product_name"/> 
<field column="catalog" name="product_catalog"/>
<field column="catalog_name" name="product_catalog_name"/> 
<field column="price" name="product_price"/> 
<field column="description" name="product_description"/> 
<field column="picture" name="product_picture"/> 
</entity>   
</document>


</dataConfig>

修改:D:\installed\solr-resources\solrhome\collection1\conf\schema.xml,创建索引字段信息等(在最后添加如下内容):


<!--定义field,指定field的type属性为text_ik-->
<field name="title_ik" type="text_ik" indexed="true" stored="true" />
    <field name="content_ik" type="text_ik" indexed="true" stored="false" multiValued="true"/>

<!-- 商品名称 -->
<field name="product_name" type="text_ik" indexed="true" stored="true" />


<!-- 商品分类id -->
<field name="product_catalog" type="string" indexed="true" stored="true" />

<!-- 商品分类名称 -->
<field name="product_catalog_name" type="string" indexed="true" stored="true" />

<!-- 商品价格 -->
<field name="product_price" type="float" indexed="true" stored="true" />

<!-- 商品描述 -->
<field name="product_description" type="text_ik" indexed="true" stored="false" />

<!-- 商品图片 -->
<field name="product_pic" type="string" indexed="false" stored="true" />

<field name="product_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
<!-- 
使用复制域、将product_name和product_description
都复制到product_keywords,当搜索product_keywords的时候
-->
<copyField source="product_name" dest="product_keywords"/>
<copyField source="product_description" dest="product_keywords"/>


重启一下tomcat,最后访问地址:


最后进入如下界面,点击Execute,然后进行数据导入:




http://127.0.0.1:8080/solr/#/


看到该页面表示安装成功了。

 

六、多solrCore配置

一个solr工程中可以配置多个solrCore实例。

配置多个solrCore实例好处:

1.      一个solr工程配置多个solrCore,而且每个solrcore之间是互相独立,可以单独对外提供搜索和索引服务。这类似于数据库。一个数据库可以有多个实例。如果有新需求,可以直接扩展实例。

2.      多个solrcore在管理索引文件时,可以进行分类管理。

3.      使用solrcloud(solr集群)必须要建立多个solrCore.

 

复制solrhome下的collection1到本目录下,并且改名为collection2

修改collection2文件中core.properties


配置之后,重启tomcat,再次访问http://127.0.0.1:8080/solr/#/,界面效果如下:


七、配置中文分词器

使用ikAnalyzer中文分词器:

1、把IKAnalyzer2012FF_u1.jar(就这一个)添加到solr/WEB-INF/lib目录下

2、复制IKAnalyzer的配置文件和定义词典和停用词词典到solr的classpath下。

效果如下:

3置域的类型、配置fieldType,指定使用中文分词器。(在D:\installed\solr-resources\solrhome\collection1\conf\schema.xml中配置)

错误(也就是说不要analyzer这个标签)

正确的:

 即(注意下面的text_ik和配置下面的field中的type要相同。

<fieldType name="text_ik" class="solr.TextField">

   <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>

</fieldType>

 

4配置field,使用中文分词器的fieldType

即:

<!--定义field,指定field的type属性为text_ik-->

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

<field name="content_ik" type="text_ik" indexed="true" stored="false" multiValued="true"/>

   只有指定了type=”text_ik“了,才表示要进行分词。

5重启Tomcat测试

 

八、界面功能介绍

1.Analysis

2.Document

通过该界面操作,可以对索引库进行添加索引、删除索引、修改索引

在solr中,添加或修改文档时,必须要传入一个唯一主键id

3、Query

*:*:可以查询索引的数据

九、Schema.xml的基本使用

Schema.xml文件在SolrCore中conf目录下。这个文件主要是配置域名及域的类型等信息。

Solr中的域要先定义后使用

 

文件位置:


4.1.1 Field(重点)

配置solr的域:

<fieldname="id" type="string" indexed="true"stored="true" required="true" multiValued="false"/>

Name:域名

Type:域的类型(也需要配置)

Indexed:是否索引

Stored:是否存储

Required:是否必须,一般只有id才设置

multiValued:是否可以多值。如果设置多值的话,里面的值就采用数组方式存储。比如商品图片(大图、中图、小图等等)

 

4.1.2 dynamicField

配置动态域

<dynamicField name="*_i"  type="int"    indexed="true"  stored="true"/>

Name:指定域的名称,该域的名称是通过一个表达式来指定的

Type:域的类型(在使用动态域的时候,要分清该域对应的类型)

 

目录
相关文章
|
10月前
|
XML 存储 JavaScript
DOM 节点遍历:掌握遍历 XML文档结构和内容的技巧
**XML DOM 遍历、操作和导航概述** - 遍历XML节点树用于提取信息,例如,通过JavaScript的DOM API循环`&lt;book&gt;`子节点显示名称和值。 - DOM解析器处理XML文本数据,包括解析字符数据(PCDATA)和识别CDATA段。 - 节点导航涉及`parentNode`、`childNodes`等属性,`get_nextSibling`等辅助函数避免空文本节点。 - `getElementsByTagName`、`getAttribute`和`nodeValue`用于检索元素、属性值和文本。
119 6
DOM 节点遍历:掌握遍历 XML文档结构和内容的技巧
|
21天前
|
网络协议 Java 应用服务中间件
框架源码私享笔记(01)Tomcat核心架构功能 | 配置详解
本文首先分享了《活出意义来》一书序言中的感悟,强调成功如同幸福,不是刻意追求就能得到,而是全心投入时的副产品。接着探讨了Tomcat的核心功能与架构解析,包括网络连接器(Connector)和Servlet容器(Container),并介绍了其处理HTTP请求的工作流程。文章还详细解释了Tomcat的server.xml配置文件,涵盖了从顶级容器Server到子组件Connector、Engine、Host、Context等的配置参数及作用,帮助读者理解Tomcat的内部机制和配置方法。
|
6月前
|
XML JavaScript 数据格式
xercesc库中文保存XML功能实现
本文介绍了如何使用xercesc库实现中文内容的XML文件保存,包括初始化平台、创建文档、添加节点和序列化输出的完整代码示例。
xercesc库中文保存XML功能实现
|
7月前
|
XML 存储 JavaScript
xml介绍与解析,及xml库包使用
xml介绍与解析,及xml库包使用
74 0
|
10月前
|
XML JSON Go
Golang深入浅出之-XML处理在Go语言中的实现:encoding/xml包
【4月更文挑战第26天】Go语言的`encoding/xml`库提供XML处理,包括序列化和反序列化。本文讨论了XML处理的基础,如`xml.Marshal`和`xml.Unmarshal`函数,以及常见问题和易错点,如标签命名、结构体嵌套、omitempty标签和命名空间。建议遵循标签命名规则,正确处理嵌套和属性,谨慎使用omitempty,以及理解并有效利用命名空间。文中还给出了基础示例和处理XML属性的代码示例,帮助读者掌握XML处理技巧。
191 1
Golang深入浅出之-XML处理在Go语言中的实现:encoding/xml包
|
8月前
|
XML JavaScript 数据格式
【Python】已解决:(Python xml库 import xml.dom.minidom导包报错)‘No module named dom’
【Python】已解决:(Python xml库 import xml.dom.minidom导包报错)‘No module named dom’
173 0
|
10月前
|
XML JavaScript 数据格式
基于jeecgboot流程设计器里增加预览xml功能
基于jeecgboot流程设计器里增加预览xml功能
97 1
|
10月前
|
IDE Java 应用服务中间件
JDK1.6.0+Tomcat6.0的安装配置(配置JAVA环境)
JDK1.6.0+Tomcat6.0的安装配置(配置JAVA环境)
341 1
|
10月前
|
XML JavaScript 数据格式
XML Schema(XSD)详解:定义 XML 文档结构合法性的完整指南
XML Schema(XSD)是用于定义XML文档结构的规范,它描述了元素、属性及其顺序、数据类型和约束。与DTD相比,XML Schema支持更多数据类型,如字符串、日期等,并且是基于XML的,允许扩展和重用。学习XML Schema有助于确保数据通信时双方对内容的理解一致,通过验证防止错误。示例展示了如何定义一个`note`元素,包含`to`, `from`, `heading`和`body`子元素,都是字符串类型。XML文档可以通过引用XML Schema进行验证,确保内容符合预设模式。
746 0
|
10月前
|
Java 开发工具 开发者
dashvector的SDK包内含log4j2.xml,坑
对公SDK自带`log4j2.xml`配置,引发本地配置冲突。建议SDK开发者移除内置日志配置,避免影响用户设置。
130 0