当前位置: 首页> 教育> 锐评 > 厦门外发加工网_襄阳网站建设营销_网页设计论文_数字营销软件

厦门外发加工网_襄阳网站建设营销_网页设计论文_数字营销软件

时间:2025/7/11 15:22:53来源:https://blog.csdn.net/weixin_42590083/article/details/142825990 浏览次数:0次
厦门外发加工网_襄阳网站建设营销_网页设计论文_数字营销软件

Solr的使用

1. solr的原理

Apache Solr 是一个基于Apache Lucene 的高性能全文索引服务器,提供了丰富的功能,如分布式搜索,索引赋值,负载均衡等,并且可以通过Http协议与应用程序进行交互。

1.1 架构

Solr的架构主要包括一下几个组件:

  • 客户端: 通过Http请求向solr发送查询或者更新请求
  • solr 节点: 处理来自客户端的请求,执行索引操作或者管理索引
  • Zookeeper: 在SolrCloud模式下,用于集群协调和服务发现
1.2 索引过程
  • 数据传输: 数据可以来自多种来源,如数据库,文件系统,Web服务等
  • 文档解析:solr接收到的数据会被解析成文档格式,每个文档包含多个字段,每个字段有其类型,如文本,日期,整数等
  • 分析器Analyzer: 文档中的文本字段会通过分析器处理,包括分词,去除停 用词,转换小写等步骤
  • 倒排索引构建: 经过分析后的文档会被存储在倒排索引中,倒排索引是一种数据结构,它将文档中的单词映射到包含这些单词的文档列表
  • 提交: 当索引操作完成时,需要显示的提交更改,以便新添加或者修改的文档被搜索到
1.3 搜索过程
  • 查询解析: 客户端发送的查询字符串会被solr解析成内部表示形式
  • 查询处理(query parser ):根据查询字符串和配置的查询处理器生成查询对象
  • 匹配倒排索引:solr使用生成的查询对象去匹配倒排索引的数据
  • 评分和排序: 匹配到的文档会根据相关性算法进行评分,并且按照分数排序
  • 结果返回: Solr将查询结果以JSON或者xml的格式返回给客户端
1.4 分布式搜索
  • SolrCloud: solrCloud时solr分布式模式,使用Zookeeper来管理集群的状态
  • 分片(sharding): 索引被分割成多个分片,分布在不同的节点上,这样可以提高搜索性能并且实现水平扩张
  • 复制(replication): 每个分片可以有多个副本,提供高可用和容错能力
  • 路由:查询请求会被路由到相关的分片上,然后合并各个分片的结果
1.5 配置和管理:
  • Schema.xml: 定义了文档的结构,包括字段及其类型
  • solrconfig.xml: 包含了solr的配置信息,如请求处理器,缓存设置,插件配置等
  • 管理界面:solr提供了一个Web管理界面,用户可以通过这个界面来进行管理和监控solr实例
1.6 性能优化
  • 缓存: solr支持多种类型的缓存,如过滤器缓存,查询结果缓存等来提高响应速度
  • 硬件资源:适当的硬件资源配置(如更多的内存,更快的磁盘IO)也可以显著的提升性能
  • 调优参数:通过调整各种配置参数,如合并策略,刷新间隔等,可以进一步的优化性能
2. solr如何使用,集成
2.1 安装solr
下载solr:

从Apache solr的官网下载最新版本的solr,解压下载的文件到你选择的目录中

启动solr

进入解压后的solr目录,启动solr服务器,在windows上运行bin\solr start,在Linux\Unix上运行 bin/solr start

创建核心(core)

核心是solr中的一个逻辑索引单元,你可以通过solr的管理界面或者命令行来创建核心。例如,通过命令行创建名为mycore的核心:bin/solr create -c mycore

2.2 配置solr
配置schema:

server/solr/mycore/conf 目录下找到managed-schema文件(旧版可能是schema.xml),编辑这个文件来定义字段的类型,字段,以及他们的属性,如是否存储,是否索引等

配置solrconfig.xml

在同一目录下找到solrconfig.xml文件,配置请求处理器,缓存设置,插件等

调整其他配置:

根据需要调整其他配置文件,如solr.xmlzoo.cfg(如果使用solrCloud模式)

2.3 使用solr
索引数据:

可以通过HTTP Post请求向solr发送文档进行索引,例如,使用curl命令

curl http://localhost:8983/solr/mycore/update -H "Content-Type: application/json" --data-binary '[{"id":"1", "title":"Example Document 1", "content":"This is the content of the first example document."},{"id":"2", "title":"Example Document 2", "content":"This is the content of the second example document."}
]' -X POST

提交更好:curl http://localhost:8983/solr/mycore/update?commit=true -X GET

执行搜索:

通过发送HTTP Get请求来执行搜索查询

curl "http://localhost:8983/solr/mycore/select?q=*:*&wt=json&indent=true"
2.4 集成solr到应用程序

Java应用程序:

添加依赖:

如果你使用的是maven。可以在pom.xml中添加solr依赖

<dependency><groupId>org.apache.solr</groupId><artifactId>solr-solrj</artifactId><version>8.11.1</version> <!-- 请根据实际情况更新版本号 -->
</dependency>
编写代码

创建solr客户端并且连接到solr服务端:

import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.common.params.ModifiableSolrParams;public class SolrIntegration {public static void main(String[] args) throws Exception {// 创建 Solr 客户端String url = "http://localhost:8983/solr/mycore";try (SolrClient client = new HttpSolrClient.Builder(url).build()) {// 执行搜索ModifiableSolrParams params = new ModifiableSolrParams();params.set("q", "*:*");params.set("rows", 10);QueryResponse response = client.query(params);System.out.println(response.getResults());}}
}
3. solr的语法
3.1 基本查询
Term Queries(术语查询)

用于查找包含特定词项的文档,如,content:solr 查询content 字段中包含solr的文档

Phrase Queries(短语查询)

用于查找包含特定短语的文档,如,content:"Apache solr"查找content字段中包含"Apache solr"短语的文档

Wildcard Queries(通配符查询)

支持单字符通配符 和多字符通配符* 。如,title:te?t 查找title字段中包含以te开头,后根任意一个字符,再根t的文档。 或者title:te*t ,表示查找title字段中包含以te开头,后根任意数量的字符,再根t的文档

Fuzzy Queries(模糊查询)

通过再词项末尾加上 ~ 来起订模糊匹配。如,title:roam~ 查找title字符中与roam类似的词项(如foam等)

Proximity Queries(邻近查询)

通过使用~ 后根数字来指定两个词项之间的最大距离。如,title:"Solr search"~3 表示查找title字段中“Solr” 和search之间最多相隔3个词的文档

Range Queries(范围查询)

用于查询字段值再某个范围内的文档。如,price:[10 to 100] 表示price字段再10到100之间的文档

Boolean Operation(布尔操作符)

AND OR NOT 用于组和多个查询条件,如,
title:solr AND content:search 表示查找同时包含solr和search的文档
title:solr OR content:search ,表示查找包含solr或者search的文档
title:solr NOT content:search 表示查找包含solr但不包含search的文档

Boosting a Term(提高词项权重)

通过再词项后面添加^ 和一个浮点数来提升该词项的权重。如,title:Solr^2 AND content:search 提升solr再结果中的权重

Field Grouping(字段分组)

通过{!field f= fieldName} 语法来指定查询的字段。如,{!field f=title}Solr 指定只在title字段中查找Solr

3.2 高级查询
Filter Queries(过滤查询fq)

用于在搜索结果上应用过滤条件,通常用于提升性能。如,q=:&

关键字:厦门外发加工网_襄阳网站建设营销_网页设计论文_数字营销软件

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: