zoukankan      html  css  js  c++  java
  • 搭建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/>

     

     

     

  • 相关阅读:
    Thinkphp 中的自动验证 上一篇有例子
    Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册
    ThinkPHP框架 祖辈分的理解 【儿子 FenyeController】继承了【父亲 FuController】继承了【祖辈 Controller】的
    ThinkPHP框架 AJAX方法返回 AJAX实现分页例子:
    ThinkPHP框架 【 AJAX方法返回 】 例子:简单添加一条数据 和 查询一个表里的数据
    thinkPHP框架 简单的删除和修改数据的做法 和 模板继承的意思大概做法
    cookie 和 session 的区别
    ThinkPHP框架 表单传值自动验证!!
    UVA 11624 Fire! (bfs)
    POJ 3074 Sudoku (Dacing Links)
  • 原文地址:https://www.cnblogs.com/chenKnowledgeConllection/p/7000387.html
Copyright © 2011-2022 走看看