Apache solr(一).

简介: 概念:Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。Apache Solr 中存储的资源是以 Document 为对象进行存储的。
概念: Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。Apache Solr 中存储的资源是以 Document 为对象进行存储的。每个文档由一系列的 Field 构成,每个 Field 表示资源的一个属性。Solr 中的每个 Document 需要有能唯一标识其自身的属性,默认情况下这个属性的名字是 id,在 Schema 配置文件中使用:<uniqueKey>id</uniqueKey>进行描述。
             Solr是一个高性能,采用Java5开发,基于Lucene全文搜索服务器。Solr是一个独立的企业级搜索应用服务器,目前很多企业运用solr开源服务。原理大致是文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提 供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。
 
solr的所有版本下载地址:http://archive.apache.org/dist/lucene/solr/ 
 
 
安装配置以及程序插入与查询
1、启动solr
       命令行窗口进入安装目录的bin下,直接使用solr start启动,不加参数默认使用8983端口
 
 

 

2、访问solr控制台
进入solr的控制台。 
solr的工作核心名词为core,可以理解成数据库的表。 每个core都有自己的schema,可对应理解为数据库的字段。 
控制台如下图所示。 
当前是没有core文件的,需要我们自己配置。 
 

 

3、配置core
配置我们自己的core。 
在控制台的左边菜单中,选择Core Admin,进入core新建页面。 
在点击Add Core 保存之前, 先进入solr的安装目录的 server - solr 下 新建一个和core同名的文件夹,如: 
进入E:\DevelopEnvironment\solr\solr-6.2.0\server\solr 新建 democore 。 
文件夹建好后,进入solr目录的 server\solr\configsets\basic_configs 下,拷贝conf文件夹到新建的文件夹下 
如:进入E:\DevelopEnvironment\solr\solr-6.2.0\server\solr\configsets\basic_configs 拷贝conf文件夹到刚刚新建的democore 
 

 

完成这一步准备工作后,回到控制台的Core Admin 录入name和dir 点击 Add Core 保存即可 
 

 

保存完成后,可看到该core: 
 

 

对应的文件夹内容也改变为: 
 
 

 

 
4、新建schema
core文件创建完成后,创建其对应的schema。 
进入该core的Schema 菜单 ,点击Add Field ,在弹出的页面中,录入name和type,name代表字段的名称,type为类型 ,类型选择 text_general。
stored 意思为,将该字段的值进行存储,用来以后索引的时候直接取出。
indexed 表示 将该字段进行索引。 
 
 
录入完成后,点击Add Field保存即可。
至此,core和schema都构建完成。接下来要向solr的这个core插入数据。
 
5、使用程序插入数据
新建Java项目,将solr的对应jar包拷贝到项目中。 
使用到的jar包在 dist 文件夹下,主要包括 solrj这个jar包和solr-lib下的jar包,为了方便,直接全部拷贝过去即可。 
如:E:\solr-6.5.1\dist    E:\solr-6.5.1\dist\solrj-lib
以及运行程序插入程序
        HttpSolrClient.Builder builder = new HttpSolrClient.Builder("http://localhost:8983/solr/democore");         
        HttpSolrClient solrClient = builder.build();         
        SolrInputDocument document = new SolrInputDocument();        
        document.addField("id", System.currentTimeMillis() + "");        
        document.addField("title", "计算机科学与技术" + System.currentTimeMillis());         
        solrClient.add(document);         
        solrClient.commit();        
        solrClient.close();

  

 

 

 
6、使用程序查询数据
HttpSolrClient.Builder builder = new HttpSolrClient.Builder("http://localhost:8983/solr/democore");
HttpSolrClient solrClient = builder.build();
SolrQuery query = new SolrQuery();
query.set("q", "title:计算机科学与技术1495013922355");
QueryResponse response = solrClient.query(query);
SolrDocumentList list = response.getResults();
solrClient.commit();
System.out.println("匹配数量:"+list.getNumFound());
Iterator itr = list.iterator();
while (itr.hasNext()) {
    SolrDocument solrDocument = (SolrDocument) itr.next();
    Object id = solrDocument.getFieldValue("id");
    System.out.println(id.toString());
    Object title = solrDocument.getFieldValue("title");
    System.out.println(title.toString());
}
 
 

 

 
至此,全部完成。上述只是最基本的使用配置,对于中文的分词还是停留在最原始的每个中文都当作一个词汇的分词算法上。这是比较暴力不可取的,需要替换对应的中文分词器。
常用的几个命令: 
启动:solr start
指定端口启动:solr start -p 8984
停止solr:solr stop -p 8983
删除指定的core文件:solr delete -c corename
创建core:solr create -c corename
solr状态查看:solr status
 
目录
相关文章
|
12月前
|
机器学习/深度学习 人工智能 编解码
【搜索引擎】Apache Solr 神经搜索
【搜索引擎】Apache Solr 神经搜索
|
12月前
|
安全 Linux API
​Apache Solr未授权上传漏洞复现及验证POC编写
​Apache Solr未授权上传漏洞复现及验证POC编写
|
Apache 安全 应用服务中间件
|
Web App开发 应用服务中间件 PHP
|
Apache 数据格式 算法
|
XML Java Apache
玩转Apache Solr 6.5.1
以下都是基于linux环境 参考链接:http://lucene.apache.org/solr/quickstart.html 目录: solr 基本命令总结 solr 命令参数详解 solr 查询语法详解 solr schema配置详解 1.
1404 0
|
关系型数据库 MySQL Apache
Apache solr(二).
上一篇试着进行了solr的安装和配置,以及如何solr的检索,今天试着简单的将solr连接MySQL数据库(才尝试了单表、一对多和多对多的还有待研究) 1、MySQL的目录结构   2、新建一个democore  3、在solr服务器http://localhost:8983/sol...
1051 0
|
分布式计算 大数据 Apache
【Spark Summit East 2017】使用Spark MLlib和Apache Solr构建实时实体类型识别系统
本讲义出自Khalifeh Aljadda在Spark Summit East 2017上的演讲,由于实体查询系统中的查询一般比较短,所以由于缺少上下文信息,所以不适合使用传统的bag-of-words模型来确定实体类型,本讲义介绍了一个新颖的实体类型识别系统,该系统使用Spark MLlib和Apache Solr构建,能够结合不同来源的线索来分析出需要查询实体。
2426 0

推荐镜像

更多