`
郭小小小
  • 浏览: 3123 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

solr的使用

    博客分类:
  • sorl
阅读更多

solr的原理不和大家一一讲述,主要讲solr在使用过程中的注意事项

一.solr建立服务

 首先是安装solr,安装步骤省略。。。。(不要说我懒,安装步骤导出都是。。。)

成功之后 需要在solr里面建立一个针对你的业务的服务,我想建立一个叫做discuz的服务

./bin/solr create -c discuz

 

然后你在你的solr目录 :solr-5.5.3/server/solr/  下看见了discuz   ,这是你刚刚创建的,针对某一业务的整个搜索配置都是在这个目录下配置的。

discuz目录解析:

    1.conf :配置文件(索引、分词库、停词库等等配置)

    2.core.properties

    3.data

二.建立索引

   建立索引就是数据库和solr建立一个关系,可以满足数据库数据定时导入solr里面,方面solr实现搜索。那么怎么建立索引呢? 

   在solr-5.5.3/server/solr/discuz/conf/data-config.xml 里面

 

<dataConfig>
    <dataSource type="JdbcDataSource"
        driver="com.mysql.jdbc.Driver"
        url="jdbc:mysql://11.11.11.11:800/database"
        user="root" password="123456"/>
    <document>
        <entity name="database" query="SELECT * FROM table;  "  
 deltaQuery="SELECT id  FROM table  where  `create` > unix_timestamp('${dataimporter.last_index_time}' ;  " 
  deltaImportQuery="SELECT * FROM table where id =${dataimporter.delta.tid}"  pk='tid'>
            <field column="id" name="id" />
            <field column="subject" name="subject" />
            <field column="views" name="views" />
           <field column="vip" name="vip" />
            <field column="message" name="message" />
            <field column="create" name="create" />
        </entity>
    </document>
</dataConfig>

 

 

  dataConfig 里面是对数据库导入的一个配置

   dataSource:数据库连接配置

   document:数据库索引配置

       entity:name= 数据库名字

                   query=全量导入数据的sql

                  deltaQuery:增量导入的id

                  deltaImportQuery:增量导入的sql  

 解释一下全量和增量:正常数据库导入solr第一次是全部导入,但是随着时间的变化数据库和solr数据不一致,这时候需要再次导入,按时间技术,半小时或者更合适的时间,只需要增量导入即可,更合适的时间再次全量导入即可

               field  这些是返回字段的定义

 

==到现在数据库和solr的关系完事了,下面是solr自身对这些字段的处理

三.solr 对展示字段以及搜索的配置

   在solr-5.5.3/server/solr/discuz/conf/solrconfig.xml

   1.添加一下代码

<schemaFactory class="ManagedIndexSchemaFactory">
      <bool name="mutable">true</bool>
      <str name="managedSchemaResourceName">managed-schema</str>
 </schemaFactory>

 

 

   在conf下面的 managed-schema 文件里对索引配置

 1.配置中文分词mmseg4j

 

<!-- mmseg4j-->
    <fieldType name="text_mmseg4j_complex" class="solr.TextField" positionIncrementGap="100" >  
        <analyzer type="index">  
           <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="solr-5.5.3/server/solr/discuz/conf/dic"/>  
           <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
           <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        </analyzer>
        <analyzer type="query">
           <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="solr-5.5.3/server/solr/discuz/conf/dic"/> 
           <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
           <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        </analyzer>
    </fieldType>  
    <fieldType name="text_mmseg4j_maxword" class="solr.TextField" positionIncrementGap="100" >  
        <analyzer>  
            <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="solr-5.5.3/server/solr/discuz/conf/dic"/>
        </analyzer>  
    </fieldType>
    <fieldType name="text_mmseg4j_simple" class="solr.TextField" positionIncrementGap="100" >  
        <analyzer>  
            <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="solr-5.5.3/server/solr/discuz/conf/dic"/>     
        </analyzer>  
        </fieldType>
    <!-- mmseg4j-->

   solr-5.5.3/server/solr/discuz/conf/dic:中文分词的分词库目录,在改目录下放word.dic分词文件

 stopwords.txt:停词文件

 synonyms.txt:近义词文件

    analyzer type="index":索引检查分词、停词、近义词

   analyzer type="query":查找检查分词、停词、近义词

2.配置索引字段、字段类型、查询字段的中文分词类型

 

<field name="submes" type="text_mmseg4j_complex" indexed="true" stored="true" required="true" multiValued="true" />
<field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false" />
<field name="vip" type="int" indexed="true" stored="true" required="true" multiValued="false" />
<field name="views"    type="int" indexed="true" stored="true" required="true" multiValued="false" />
<field name="create" type="int" indexed="true" stored="true" required="true" multiValued="false" />
<field name="subject" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="message" type="text_general" indexed="true" stored="true" required="true" multiValued="false" />
<copyField source="subject" dest="submes" />
<copyField source="vip" dest="submes" />
<copyField source="views" dest="submes" />
<copyField source="create" dest="submes" />

 field 字段定义了solr展示的类型

   name:字段名字

   type:字段类型(如果是要进行查询的字段,类型为中文分词类型如:text_mmseg4j_complex)

   indexed:true

    stored:true

   required:true

        multiValued:查询字段设置为true ,其他为false

copyField : 拷贝需要索引的字段到整合字段中 submes是本列子中的整合字段  solr查询也是查询这个字段

  这个字段可以根据多个字段进行权重设置,并且打分,排序

 

 

四.重启solr

  discuz配置都已经更改完,现在需要重启生效:

  ./bin/solr restart 

  对于一些大的网站而言,重启整个solr回导致其他业务无法搜索,所以可以搞一个zookeep 来一个分布式 管理就可以了

 

 

 五.使用

1.增量导入,在你的solr使用界面上左边下拉框找到discuz 

  下面出现的

  Dataimport: 是执行增量全量导入的

  query:搜索

  analysis:分词

 

 

无法加载图片,根据很难形容,但是打开这个界面就知道了

 

2.搜索打分:有的时候我们除了想根据匹配度排序外,还想根据浏览量、创建时间、是否是vip等综合因素排序,

在curl请求时 请求参数要加上下面的值:

       $params['defType'] = 'edismax' ;

       $params['bf'] = "sum(linear(vip,1000,0),linear(sqrt(log(linear(views,1,2))),100,0),sqrt(log(create)))";

    

  bf里面的参数是solr支持的打分标准的函数,具体使用参考http://mxsfengg.iteye.com/blog/352191 详解  很不完善,后续还会完善,如有问题随时提问

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 60 KB
分享到:
评论

相关推荐

    Solr(Cloudera)使用手册

    3. **加载中文分词jar包**:将中文分词器的jar包添加到Solr的lib目录下,以供Solr使用。 #### 六、监控Solr 监控Solr集群的状态对于及时发现和解决问题至关重要。 - **使用Cloudera Manager**:Cloudera Manager...

    solr使用指南1

    Solr 使用指南 Solr 是一个开源的企业级搜索服务器,底层使用易于扩展和修改的 Java 来实现。服务器通信使用标准的 HTTP 和 XML,因此如果使用 Solr,了解 Java 技术会有用却不是必须的要求。Solr 的核心技术是使用...

    solr使用和原理

    solr使用和原理 简单明了的介绍了solr的使用和原理,及其部署方式,适合初学者第一次部署

    solr使用教程结合taotao项目的search模块1

    【Solr 使用教程结合 TaoTao 项目 Search 模块1】 在本文中,我们将深入探讨如何使用 Apache Solr,一个基于 Lucene 的全文搜索引擎,以及如何将其集成到 TaoTao 电商项目的 Search 模块中。Solr 提供了高效、可...

    Solr使用指南

    ### Solr使用指南 #### 一、Solr简介与安装 **Apache Solr** 是一个高性能、基于 Lucene 的全文搜索引擎。它支持高度可扩展且可靠的数据搜索功能,并且易于部署和管理。Solr 能够处理大量的数据,并提供丰富的查询...

    Solr 使用文档 pdf版

    ### Solr 3.* 使用手册知识点总结 #### 一、Solr简介与核心概念 - **Solr**:Apache Solr 是一个高性能、基于 Lucene 的全功能搜索引擎平台。它支持分布式搜索,并提供了丰富的功能集来满足企业级搜索需求。 - **...

    solr的安装使用步骤

    ### Solr的安装使用步骤详解 #### Solr概述与特性 **Solr** 是 Apache 下的一个顶级开源项目,它基于 **Lucene** 进行构建,提供了强大的全文搜索能力。相较于 Lucene,Solr 提供了更为丰富的查询语言支持,并且...

    Solr入门使用详解.zip

    通过阅读“Solr使用详解.pdf”,你可以深入了解Solr的使用方法,掌握从安装配置到实际操作的全过程,从而更好地利用Solr解决实际的搜索和分析问题。同时,solrJ和IK分词器的使用将进一步提升你在Java环境中操作Solr...

    solr(solr-9.0.0-src.tgz)源码

    - **请求处理**:当请求到达时,Solr使用RequestHandler来解析和处理这些请求,返回结果。 - **配置**:Solr的配置文件在`conf`目录下,包括schema.xml(定义字段和字段类型)、solrconfig.xml(配置索引和查询...

    easynet.solr开发与使用

    《easynet.solr开发与使用》 在现代信息技术领域,搜索引擎已经成为不可或缺的一部分,而Apache Solr作为一款强大的开源搜索引擎,被广泛应用于各种数据检索场景。为了方便开发者更高效地集成和操作Solr,Easynet...

    solr服务器_solr_

    Solr使用倒排索引技术,将文档中的每个词映射到包含该词的文档列表,大大提高了搜索速度。 2. **Core**:在Solr中,Core是一个独立的搜索实例,可以理解为数据库的概念。每个Core有自己的配置、索引和数据。你可以...

    solr增量更新架包apache-solr-dataimportscheduler.jar

    Solr使用DataImportHandler(DIH)来从关系型数据库、XML文件或其他数据源导入数据。DIH提供了一个全面的数据加载框架,支持全量导入和增量导入。 1. **全量导入**:全量导入是将所有数据从源数据库或文件一次性...

    最新版windows solr-8.8.2.zip

    4. **Schema设计**:Solr使用Schema.xml文件来定义索引字段,包括字段类型、分词器、过滤器等,这对于优化搜索性能至关重要。 5. **RESTful API**:Solr 8.8.2支持JSON、XML等多种格式的HTTP接口,便于通过编程方式...

    php与solr交互扩展库包

    标签“php与solr”、“solr”、“solr使用”进一步明确了这个扩展库的核心功能和应用场景,它主要用于PHP开发者在处理Solr相关的任务时,提供便利的接口和工具。 压缩包子文件的文件名称“SolrPhpClient”很可能是...

    SOLR的应用教程

    1.2.1 Solr使用Lucene并且进行了扩展 Solr基于Apache Lucene,它提供了更高级的功能,如集群、分布式搜索、复制和负载均衡,使得Solr更适合大规模、高并发的搜索应用。 1.2.2 Schema(模式) Schema是Solr的核心...

    solr各种最近的jar包

    9. **日志和监控**:Solr使用Log4j进行日志记录,`log4j.jar`包含相关功能。同时,`solr-logging.jar`支持监控Solr服务器的状态和性能。 总之,这个压缩包提供了Solr运行所需的全套库,无论是开发、部署还是维护...

    solr7官方文档

    文档的【描述】部分反复强调“solr 使用官方指南”,这意味着文档是权威的、官方认可的学习材料,包含了使用 Solr 进行搜索引擎搭建、部署、管理等操作的官方指导和最佳实践。 【标签】为 "solr",直接反映了文档...

    Solr3.5开发应用指导

    - **1.2.1 Solr使用Lucene并且进行了扩展**:Solr是一个开源的高性能搜索引擎,它基于Lucene构建,提供了更高级别的功能和服务,如全文检索、自动完成和实时更新等。 - **1.2.2 Schema(模式)**:Solr使用Schema来...

Global site tag (gtag.js) - Google Analytics