solr学习笔记(一):入门

     Solr是一个比较成熟和热门的搜索引擎解决方案,之前的博客也提到过。最近在学习搜索开发也查阅过solr的资料,相对elasticsearch来说资料更全,案例更多也更让人放心,我现在还没发做很细致的比较,但个人认为中小型搜索用solr可能会更合适,毕竟更成熟可靠一些。

     介绍Solr的资料也有不少,比如书籍就有 Solr.3.Enterprise.Search.Server和Apache Solr 3.1 Cookbook。前者更适合完全搜索新手,如果你是对检索有一定了解,尤其是对lucene有了解的,我更推荐ApacheSolrRefGuide,这本书比较偏手册型,更适合开发者定位到问题。虽然目前solr已经到了4.0版本,不过很久旧版本的教程应该还是差不多可以对得上。

     下面就列出一些我在学习过程中记录的一些要点:

1. 启动

    1.1  jetty试用, 通过-D指定其他属性
         cd example
         java -Dsolr.solr.home=/some/dir -jar start.jar, -D

    1.2 tomcat
        1) 拷贝solr.war到$TOMCAT_HOME/webapps
        2) 拷贝solr实例需要的配置目录(example/solr)至$SOLR_HOME
        3) 在$TOMCAT_HOME/conf/Catalina/localhost下创建个solr.xml, 内容为,注意路径要自己写,别直接贴我这个上去用
        <Context docBase=" YOUR_TOMCAT_HOME /webapps/solr" debug="0" crossContext="true" >
           <Environment name="solr/home" type="java.lang.String" value="YOUR_SOLR_HOME" override="true" />
        </Context>
         4) 启动tomcat 启动solr项目
 

2. 配置 配置是非常重要的部分,例子给出比较全的配置项,但需要好好理解
    每个collection都有一般性配置solrconfig.xml 和表配置schema.xml
    2.1 schema.xml
          types:  定义字段类型、怎么分词等
        例如<fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
        以及: <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
        <!-- in this example, we will only use synonyms at query time
        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
        -->
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>
         fields: 表字段
             <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
   <field name="sku" type="text_en_splitting_tight" indexed="true" stored="true" omitNorms="true"/>
         copyField: 用来标识字段不同的索引方式,或者多个字段联合索引
<copyField source="cat" dest="text"/>
     2.2 solrconfig.xml : collection核心配置
         requestHandler: 分发Http request到不同Handler执行,包括search和update两部分
          UpdateRequestProcessorChain: 定义一些列更新操作,之后在requestHandler的属性 <str name="update.chain">指定
    highlighting: 高亮设定
            主要参数:
        searchComponent: 提供搜索的核心功能,主要包括检索、高亮、分组等
        queryResponseWriter: 结果输出格式定义
     2.3  solr.xml core admin配置
        包括设置每个collection数据存放目录,admin路径;    通常可以在用户界面上操作并修改
        必须保证至少有一个core,否则启动solr admin管理GUI会报错

3. 索引索引其实就是为solr传入文档
    默认支持XML JSON CSV格式,
    4.0开始支持原子操作  add, set 和 inc,但如果文档指定id没有出现在索引里,会添加只有部分字段的文档,也就是upsert
    可以去重(一般情况可能用不着):updaterequestChain中需要增设
<updateRequestProcessorChain name="dedupe">
<processor
class="org.apache.solr.update.processor.SignatureUpdateProcessorFactory">
</processor>
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
    并在handler中启用:<str name="update.chain">dedupe</str>
      HTTP删除collection内的文档:
        curl -XPOST http://localhost:8080/solr/collection1/update?commit=true 
            <delete><query>*:*</query></delete>

4. 搜索,拼接http url字符串来获取搜索结果
    4.1  设置search的requestHandler和返回的responsewriter。
    4.2 设置search的参数
                q: 查询词。格式field:query
                defType: 指定query parser 
                fq: 过滤器,类似SQL的where
                qt: 指定Handler处理请求
                start和rows: 分页功能
                fl:输出字段列表
                sort:排序
                wt: 输出格式,需要在solrconfig.xml定义queryResponseWriter, 默认是xml
                echoHandler和echoParams: 指定debug时候输出的信息
                facet.*: 分组功能,详见:http://wiki.apache.org/solr/SimpleFacetParameters
                mlt.*: moreLikeThis功能, 详见:http://wiki.apache.org/solr/MoreLikeThis
                hl.*: 高亮功能,详见:http://wiki.apache.org/solr/HighlightingParameters
    4.3 结果分组功能grouping:类似facet。 http://wiki.apache.org/solr/FieldCollapsing
    4.4 join功能(暂缺)
   

5. queryparser
    用于解析query语法,defType参数设置
          standard和Dismax的区别:
        Standard要求输入的查询内容符合SolrQuerySyntax查询语法,特殊字符要进行转义。如果不符合语法,会报错。Dismax查询就不会存在这样的问题,对于用户的输入始终都不会报错http://ericbao.blog.sohu.com/200652504.html


加载分词
    6.1 IK分词
        注意下载适合solr版本的ikanalyzer, 以tomcat版本为例
        1. 将jar包放入{$tomcat}的webapps/ solr/WEB-INF/lib 下 ,
            动态方法不需要重启solr实例:放在需要添加的collection目录的lib下, 目录自行新建。然后再solrconfig.xml加一行 <lib dir="./lib" />
        2. 将IKAnalyzer.cfg.xml 和 需要的字典文件放在  {$tomcat}的webapps/ solr/WEB-INF/classes ( 目录可能需新建
        3. schema.xml中在fieldType 加入
 <fieldType name="text" class="solr.TextField"> 
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> 
</fieldType>
            即可使用相应fieldType 的
        在solr admin中可以在对应collection下进行测试。tomcat要注意uri的编码问题(在server.xml中 Connector中加入  URIEncoding="utf-8"
    6.2 smartcn分词
        jar包直接加入lib

7 solrj 
     JAVA API:主要就是把java对象拼装成Http字符串通过Httpclient来发送请求。


    以上几点我认为使用solr需要注意的事项吧,有关更深入的学习笔记,会在之后陆续放出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
elasticsearch 学习笔记包括以下内容: 一、Elasticsearch概述: - Elasticsearch是一种开源的分布式搜索和分析引擎,可以用于快速搜索、分析和存储大量的结构化和非结构化数据。 - Elasticsearch与Solr相比有一些区别,包括用户、开发和贡献者社区的规模和成熟度等方面。 二、Elasticsearch安装: 1. 下载Elasticsearch,可以从官方网站或华为云镜像下载。 2. 安装Elasticsearch。 三、安装head插件: - head插件是一个可视化的管理界面,可以方便地管理和监控Elasticsearch集群。 四、安装Kibana: 1. Kibana是一个开源的数据可视化工具,用于展示和分析Elasticsearch中的数据。 2. 下载Kibana并安装。 3. 启动Kibana并进行访问测试。 4. 可选的汉化操作。 五、ES核心概念理解: - 学习ES的核心概念,包括索引、文档、映射、查询等。 以上是elasticsearch学习笔记的主要内容,希望对你有帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Elasticsearch 学习笔记(上)](https://blog.csdn.net/m0_52691962/article/details/127064350)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值