zoukankan      html  css  js  c++  java
  • Solr

    Solr

    Solr它是一款非常优秀的全文搜索引擎,它是一种开放源码的、基于Lucene的企业级搜索应用服务器。它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。

    官方网址:http://lucene.apache.org/solr/

    官方文档:http://lucene.apache.org/solr/resources.html#documentation

    学习参考网站:http://www.solr.cc/blog/

    Solr is the popular, blazing-fast, open source enterprise search platform built on Apache Lucene.

    Solr VS Luence

    Solr与Lucene并不是竞争对立关系,Solr依存于Lucene,因为Solr底层的核心技术是使用Lucene来实现的;

    Solr和Lucene的本质区别有以下三点:搜索服务器,企业级和管理。

    Lucene本质上是搜索库,Solr是独立的应用程序。

    Lucene专注于搜索底层的建设,而Solr专注于企业应用。

    Lucene不负责支撑搜索服务所必须的管理,而Solr支持。

    Solr是Lucene面向企业搜索应用的扩展。

    Tomcat部署

    1、 安装tomcat

    apache-tomcat-7.0.61.tar.gz

    tar -xzvf apache-tomcat-7.0.61.tar.gz -C /usr/

    2、 部署solr.war

    解压solr-4.9.1.zip文件,找到solr.war文件,位置:solr-4.9.1/example/webapps/solr.war;

    将此文件拷贝到tomcat的webapps目录下;

    3、 启动tomcat

    Tomcat会自动部署solr.war,部署完成后将solr.war文件删除;

    查看日志系统会报错误

    SEVERE: Error filterStart

    解决方法:执行下一步

    4、 Copy扩展包

    然后将 solr-4.9.1/example/lib/ext目录下的jar包都copy到webapps/solr/WEB-INF/lib目录下;

    5、 配置solr home

    打开webapps/solr/WEB-INF/web.xml文件

    <env-entry>

           <env-entry-name>solr/home</env-entry-name>

           <env-entry-value>/usr/solr</env-entry-value>

           <env-entry-type>java.lang.String</env-entry-type>

     </env-entry>

    创建/usr/solr目录,然后将solr-4.9.1/example/solr/文件的内容拷贝到 /usr/solr/目录中。

    重启tomcat,可访问solr。

    http://ocalhost:8080/solr。

    不使用tomcat,使用自身集成的web服务

    执行命令:solr-4.9.1/example/java -jar start.jar

    访问:http://localhost:8983/solr

    SolrJ

    API使用:

    官方参考:https://cwiki.apache.org/confluence/display/solr/Using+SolrJ

     1 import org.apache.solr.client.solrj.SolrQuery;
     2         import org.apache.solr.client.solrj.SolrServerException;
     3         import org.apache.solr.client.solrj.impl.HttpSolrServer;
     4         import org.apache.solr.client.solrj.response.QueryResponse;
     5         import org.apache.solr.client.solrj.response.UpdateResponse;
     6         import org.apache.solr.common.SolrDocument;
     7         import org.apache.solr.common.SolrDocumentList;
     8         import org.apache.solr.common.SolrInputDocument;
     9         import org.junit.Before;
    10         import org.junit.Test;
    11 
    12         import java.io.IOException;
    13         import java.util.ArrayList;
    14         import java.util.List;
    15 
    16 /**
    17  * Created by Edward on 2016/7/27.
    18  */
    19 public class MyTest {
    20 
    21     private static final String URL = "http://node1:8080/solr/collection1/";
    22     private HttpSolrServer httpSolrServer;
    23 
    24     @Before
    25     public void init(){
    26         httpSolrServer = new HttpSolrServer(URL);
    27 
    28     }
    29 
    30     @Test
    31     public void add() throws IOException, SolrServerException {
    32         SolrInputDocument doc1 = new SolrInputDocument();
    33         doc1.addField("id","1");
    34         doc1.addField("title","了解hadoop概念");
    35         doc1.addField("content","了解hadoop概念,这个是内容");
    36         SolrInputDocument doc2 = new SolrInputDocument();
    37         doc2.addField("id","2");
    38         doc2.addField("title","学习查看hadoop文档");
    39         doc2.addField("content","学习查看hadoop文档,这个是内容");
    40         SolrInputDocument doc3 = new SolrInputDocument();
    41         doc3.addField("id","3");
    42         doc3.addField("title","搭建hadoop环境");
    43         doc3.addField("content","搭建hadoop环境,这个是内容");
    44         List<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
    45         docs.add(doc1);
    46         docs.add(doc2);
    47         docs.add(doc3);
    48 
    49         UpdateResponse response = httpSolrServer.add(docs);
    50 
    51         System.out.println("Query Time:" + response.getQTime());
    52         System.out.println("Elapsed Time:" + response.getElapsedTime());
    53         System.out.println("Status:" + response.getStatus());
    54 
    55         httpSolrServer.commit();
    56     }
    57 
    58     @Test
    59     public void query() throws SolrServerException {
    60         SolrQuery solrQuery = new SolrQuery();
    61         solrQuery.setQuery("hadoop");
    62 
    63         QueryResponse response = httpSolrServer.query(solrQuery);
    64         SolrDocumentList list = response.getResults();
    65 
    66         for(int i=0; i<list.size(); i++){
    67             SolrDocument doc = list.get(i);
    68             System.out.println(doc.get("id"));
    69             System.out.println(doc.get("title"));
    70             System.out.println(doc.get("content"));
    71         }
    72     }
    73 }

    定义field属性是通过配置文件schema.xml,稍后再做介绍;

    包括配置中文分词器等;

  • 相关阅读:
    js 时间相关函数
    javascript面向对象:继承、多态
    面向对象相关
    reset.css css重置公共样式
    开通博客园第一天。
    vue 和 react 路由跳转和传参
    前端密码加密方式
    react组件回顶部
    移动端使用rem方法
    用rekit创建react项目
  • 原文地址:https://www.cnblogs.com/one--way/p/5715162.html
Copyright © 2011-2022 走看看