• solr常用操作及集成分词器或cdh集群部署说明


    首先,如果是从http://lucene.apache.org/solr/下载的solr,基本都是自带集成的jetty服务,不需要单独搭建tomcat环境,但是要注意jdk版本,直接解压通过cmd命令调用bin目录下的solr.cmd -start 来启动

     就可以直接通过浏览器访问,默认端口是8983,地址:http://localhost:8983/solr

    如果需要集成中文分词器

    直接在实例目录下新建lib文件夹,将中文分词器jar复制进去,再修改scahm.xml文件的filetype节点类型就可以。

    如:我新建的solr实例名叫new_core,那么就在solr-6.0.0serversolr ew_core的路径下新建lib文件夹,并把中文分词器的jar复制进去

    备注:分词器自己根据业务需要选择,常见的ik,hanlp,jcseg等

    然后修改managed-schema配置文件的filetype,当然也可以新增(其实可以理解为新增了一种solr字段类型,至于要在那个字段引用,在filed字段节点上配置type为当前类型即可)

    <fieldType name="text_ik" class="solr.TextField">  
               <analyzer type="index" class="org.wltea.analyzer.lucene.IKAnalyzer" useSmart="false"/>  
           <analyzer type="query" class="org.wltea.analyzer.lucene.IKAnalyzer" useSmart="false"/>  
          </fieldType>  
          <fieldType name="text_hp" class="solr.TextField">
          <analyzer type="index">
              <tokenizer class="com.hankcs.lucene.HanLPTokenizerFactory" enableIndexMode="true"/>
          </analyzer>
          <analyzer type="query">
              <tokenizer class="com.hankcs.lucene.HanLPTokenizerFactory" enableIndexMode="false"/>
          </analyzer>
      </fieldType>

    注:class就是分词器jar解压的src下的路径。

    更改完成后,可以重启solr服务,然后进入主页访问查看分词效果,当然前提是你要有自己的solr实例(即solr库)

     加词典


    在F:solr-6.0.0serversolr-webappwebappWEB-INF下新建classes文件夹,然后新建IKAnalyzer.cfg.xml配置文件,内容为:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">  
    <properties>  
        <comment>IK Analyzer 扩展配置</comment>
        <!--用户可以在这里配置自己的扩展字典 -->
        <entry key="ext_dict">ext.dic;</entry> 
        
        <!--用户可以在这里配置自己的扩展停止词字典-->
        <entry key="ext_stopwords">stopword.dic;</entry> 
        
    </properties>

    然后同级目录新增这两个dic文件,内容每行一个词,自己根据业务添加,也可以自己网上下载词库更新

     第二种方式是tomcat下自定义部署solr,需要将solr包中的webapps部分复制到tomcat环境中,进行配置,详情可以自己网上找一下,不赘述,分词器配置也是一样的。

    另外提一下solr删除全部索引数据的方法,在documents中,type选择xml,写上如下内容,点击提交,即可ok:

    <delete><query>*:*</query></delete>
    <commit/>

     至于查询方法,新增方法,查询排序,加权重,加匹配度等,自己查,懒得写了。

    然后值得一记的是cdh环境上的集成分词和部署,此处给自己留个提醒,其他人仅供参考

    我这边的大数据环境是4台服务器的集群环境,用ZooKeeper来配置管理,solr便是在上面的,因为是配置管理所以都是模板复制一样的命令操作,虽然我一脸low逼的用FileZilla Client工具将jar包和配置的xml文件按上述本地配置的方式复制到4台服务器上,并且将分词jar包和词典配置都放在tomcat的环境下, 

    服务器但是重启solr服务后,无效,多次尝试后发现每次重启solr服务会把tomcat下的jar还原掉,问了下同事,才知道需要在服务器上执行一句命令来更新:solrctl instancedir --update suggest  /var/lib/solr/suggest 

    注意:suggest  是我的服务器的实例名(solr库名称)

    然后赶紧用xshell工具连上服务器(任意一台都可以),执行命令,但是发现执行完的反馈信息只是刷新了var/lib/solr/suggest /conf下的内容,我的jar包并没用刷新,重启后还是会覆盖放在tomcat/webapps下的solr应用下的web-inf下的lib的jar包,然后继续找问题。

    最终在网上找到一片文章:https://blog.csdn.net/weixin_33716941/article/details/92202491

    原来这个也是可以直接复制修改的,然后把jar复制到

    /opt/cloudera/parcels/CDH-5.4.4-1.cdh5.4.4.pp0.4/lib/solr/webapps/solr/WEB-INF/lib下,再次重启solr服务OK了。

    在高版本的CDH中,位置为:/usr/lib/solr/webapps/solr/WEB-INF/lib

    另外需要注意的是:

    solr版本和分词器的版本要对应,不能出现分词的jar版本高solr低的情况,否则配置完成后重启solr就会发现有错误

  • 相关阅读:
    The Node.js Event Loop, Timers, and process.nextTick()
    Main event loop
    Why should I avoid blocking the Event Loop and the Worker Pool?
    HTML Standard系列:Event loop、requestIdleCallback 和 requestAnimationFrame
    在这个示例中,使用 watch 选项允许我们执行异步操作 (访问一个 API),限制我们执行该操作的频率,并在我们得到最终结果前,设置中间状态。这些都是计算属性无法做到的。
    多线程 主线程
    mvvm
    跨库事务
    nginx 死循环
    nginx proxy pass redirects ignore port
  • 原文地址:https://www.cnblogs.com/taleche/p/11808112.html
Copyright © 2020-2023  润新知