欢迎投稿

今日深度:

Solr 学习笔记,

Solr 学习笔记,


Solr 学习笔记

前言

Solr 官网:<http://lucene.apache.org/solr/

下载地址:http://lucene.apache.org/solr/downloads.html

Solr 历史版本:http://archive.apache.org/dist/lucene/solr/ref-guide/

什么是 Solr

Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务。Solr可以独立运行在Jetty、Tomcat等这些Servlet容器中。
Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。

使用Solr 进行创建索引和搜索索引的实现方法很简单,如下:

  • 创建索引:客户端(可以是浏览器可以是Java程序)用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr服务器根据xml文档添加、删除、更新索引 。
  • 搜索索引:客户端(可以是浏览器可以是Java程序)用 GET方法向 Solr 服务器发送请求,然后对 Solr服务器返回Xml、json等格式的查询结果进行解析,组织页面布局。Solr不提供构建页面UI的功能。Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。

Solr是一个可以独立运行的搜索服务器,使用solr进行全文检索服务的话,只需要通过http请求访问该服务器即可。

SolrCore 配置

SolrHome 是 Solr 服务运行的主目录,该目录中包含了多个 SolrCore 目录,SolrCore 目录中包含了运行 Solr 实例所有的配置文件和数据文件,Solr 实例就是 SolrCore,每个 SolrCore 提供单独的搜索和索引服务。

创建 SolrCore 实例

solrconfig.xml

lib 标签, sorlconfig.xml 中可以扩展加载 jar

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

dataDir 标签,配置 solrCore 的 data 目录,存放 solrCore 的索引文件和 tlog 日志文件

<dataDir>${solr.data.dir:}</dataDir>

requestHandler 标签,请求处理器,定义了索引和搜索的访问方式

<requestHandler name="/query" class="solr.SearchHandler">
     <lst name="defaults">
       <str name="echoParams">explicit</str>
       <srt name="rows">10</srt><!--默认显示行数-->
       <str name="wt">json</str><!--显示格式-->
       <str name="indent">true</str><!---->
       <str name="df">text</str><!--默认搜索字段-->
     </lst>
  </requestHandler>

界面介绍

Dashboard

仪表盘,显示了该 Solr 实例开始启动运行的时间,版本、系统资源、JVM等信息

Logging

Solr 运行日志信息

Cloud

Cloud 即 SolrCloud,即 Solr 云(集群),当前使用 Solr Cloud 模式运行时会显示此菜单

Core Admin

Solr core 的管理界面,在这里添加 SolrCore 实例(不推荐)

Java Properties

Solr 在 JVM 运行环境中的属性信息,包括类路径、文件编码、JVM 内存设置等信息

Thread Dump

显示 Solr Server 中当前活跃线程信息,同时也可以跟踪线程运行信息

Core selector

Analysis

通过此界面可以测试索引分析器和搜索分析器的执行情况

dataimport

可以定义数据导入处理器,从关系数据库将数据导入到 Solr 索引库中。默认没有配置,需要手动配置。

Document

通过 update 表示更新索引, solr 默认根据 Id(唯一域)来更新 Document 的内容,如果根据id值搜索不到id域则会添加操作,如果找到则更新

Query

Solr 基本使用

managed-schema

schema.xml 文件在 SolrCore 的 conf 目录下,在此配置文件中定义了 Filed 域以及域的类型等一些配置。在 Solr 中域必须先定义后使用

Filed

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
  • name:域的名称
  • type:域的类型
  • indexed:是否索引
  • stored:是否存储
  • required:是否必须
  • multiValued:是否是多指,存储多个值设置为 true,Sore 允许一个 Field 存储多个值

dynamicField(动态域)

<dynamicField name="*_is" type="pint"    indexed="true"  stored="true"  multiValued="true"/>
  • name:动态域的名称,是一个表达式,* 表示匹配任意字符,只要域的名称和表达式的规则能够匹配就可以使用

uniqueKey

<uniqueKey>id</uniqueKey>
  • uniqueKey:相当于主键,每个文档中必须有一个 id 域

copyField(复制域)

<copyField source="author" dest="author_s"/>
  • source:源域
  • dest:目标域。搜索时,指定目标域为默认搜索域,可以提供查询效率,目标域必须要使用 multiValued=“true”

fieldType(域类型)

<fieldType name="managed_en" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.ManagedStopFilterFactory" managed="english" />
        <filter class="solr.ManagedSynonymGraphFilterFactory" managed="english" />
        <filter class="solr.FlattenGraphFilterFactory"/>
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.ManagedStopFilterFactory" managed="english" />
        <filter class="solr.ManagedSynonymGraphFilterFactory" managed="english" />
    </analyzer>
</fieldType>
  • name:域类型名称
  • class:指定域类型的 solr 类型

配置 ik 分词器

一、将Ik 中文分词器 3 个 jar 添加到 solr/WEB-INF/lib 目录下

二、复制 IKAnalyzer 的配置文件和自定义词典和停用词词典到 solr/WEB-INF/classed 目录下

三 、在 managed-schema 文件中添加域类型( filedType),并添加域(filed),指定域(filed)的 type 属性为 text_ik

四、重启服务,查询测试

配置业务 Field

需求

要使用 Solr 实现网站上商品搜索,需要将 mysql 数据库中数据在 solr 中创建索引

定义 Field

先确定定义的商品 document 的 field 域有哪些,可以根据 MySQL 数据库中商品标的字段来确定

dataimportHandler 插件

需要将 MySQL数据库数据直接导入到 Solr 索引中,Solr 这里有对应的插件包

www.htsjk.Com true http://www.htsjk.com/solr/34341.html NewsArticle Solr 学习笔记, Solr 学习笔记 前言 Solr 官网:http://lucene.apache.org/solr/ 下载地址:http://lucene.apache.org/solr/downloads.html Solr 历史版本:http://archive.apache.org/dist/lucene/solr/ref-guide/ 什么是 Solr...
相关文章
    暂无相关文章
评论暂时关闭