• 搭建solr服务器


    1.安装jdk、tomcat

    2.解压solr压缩包

    3.复制solr/dist的solr.war并部署到tomcat并启动tomcat,

        使用tail -f logs/catalina.out查看日志可以看到成功解压

    4.源码中example/lib/ext下的日志依赖jar包复制到tomcat的工程中去  

      pwd查看当前完整路径   复制当前文件夹下的所有文件:cp * path   复制所有到路径中

    5.创建solrhome:将example文件夹下的solr复制到tomcat的同级目录并改名为solrhome

      需要修改的配置文件是:/solrhome/conllection1/conf/schema.xml和solrconfig.xml  

    6.修改项目中的web.xml中

    <env-entry>
      <env-entry-name>solr/home</env-entry-name>
      <env-entry-value>放入solrhome的路径</env-entry-value>
      <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>

    6.启动tomcat

      访问http://192.168.25.3:8040/solr

    7.配置中文分析器

      IK Analyzer 2012FF_hf1下的三个文件

       IKAnalyzer2012FF_u1.jar   jar包加入项目的lib文件夹中

        两个词典 mydict.dic  ext_stopword.dic   一个配置文件  IKAnalyzer.cfg.xml  放入WEB-INF目录下新建的classes文件夹中

        修改schema.xml文件,在最后添加name不重复即可

          需要自定义一个FieldTypeSchema.xml中定义。可以在FieldType中指定中文分析器。

    <fieldType name="text_ik" class="solr.TextField">
      <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
    </fieldType>

    8.自定义业务域

    确定搜索的sql语句

    例如:

     1 SELECT
     2     a.id,
     3     a.title,
     4     a.sell_point,
     5     a.price,
     6     a.image,
     7     b.`name` category_name,
     8     c.item_desc
     9 FROM
    10     tb_item a
    11 LEFT JOIN tb_item_cat b ON a.cid = b.id
    12 LEFT JOIN tb_item_desc c ON a.id = c.item_id
    13 WHERE
    14     a.`status` = 1
    sql语句
    <field name="item_title" type="text_ik" indexed="true" stored="true"/>
    <field name="item_sell_point" type="text_ik" indexed="true" stored="true"/>
    <field name="item_price"  type="long" indexed="true" stored="true"/>
    <field name="item_image" type="string" indexed="false" stored="true" />
    <field name="item_category_name" type="string" indexed="true" stored="true" />
    <field name="item_desc" type="text_ik" indexed="true" stored="false" />
    
    <field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
    <copyField source="item_title" dest="item_keywords"/>
    <copyField source="item_sell_point" dest="item_keywords"/>
    <copyField source="item_category_name" dest="item_keywords"/>
    <copyField source="item_desc" dest="item_keywords"/>
    schema.xml中插入

      

    SELECT

    a.id,

    a.title,

    a.sell_point,

    a.price,

    a.image,

    b.`name` category_name,

    c.item_desc

    FROM

    tb_item a

    LEFT JOIN tb_item_cat b ON a.cid = b.id

    LEFT JOIN tb_item_desc c ON a.id = c.item_id

    WHERE

    a.`status` = 1

     

     

     

     

    根据id删除document:

    <delete>
    <id>change.me</id>
    </delete>
    <commit/>

     

     清空索引库:

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

     

     

     

  • 相关阅读:
    isEmpty和isBlank区别
    java加密算法相关
    页面跳转、替换、刷新
    打开一个网站都经过了什么
    css3动画和JS+DOM动画和JS+canvas动画比较
    canvas如何兼容IE8
    移动端的300毫秒延迟问题
    几道前端的面试题
    js执行过程
    微信查看网页源代码的方法
  • 原文地址:https://www.cnblogs.com/chenKnowledgeConllection/p/7000387.html
Copyright © 2020-2023  润新知