一、写流程add
1、SolrServer的add方法:创建UpdateRequest对象,UpdateRequest.add(docList)。然后调用UpdateRequest.process(SolrServer)方法。
2、UpdateRequest.process():调用SolrServer(一般是HttpSolrServer)的request方法 (这里设置了ElaspedTime的开始时间)。
3、HttpSolrServer.request(SolrRequest request): 创建HttpPost,并获得request中的ContentStream(即把request中的documents变成<add><doc><field boost="1.0">XXX</field></doc>....</add>的形式) 。然后把ContentStream.getStream()将字符串变成字节流(new ByteArrayInputStream( str.getBytes(DEFAULT_CHARSET) ))放到post请求中,通过httpClient发送给solr服务器。
4、获得solr服务器的响应后的结果是字节流,需要使用ResponseParser(默认是BinaryResponseParser)对结果的字节流进行解析成相应的字符串,并放到UpdateResponse中,并设置response的ElaspedTime。
二、query流程
1、SolrServer的query方法:创建QueryRequest对象, QueryRequest(QueryParam)。然后调用QueryRequest.process(SolrServer)方法。
2、QueryRequest.process(SolrServer):调用SolrServer(一般是HttpSolrServer)的request方法
3、HttpSolrServer.request(SolrRequest request): 创建HttpGet。
4、获得solr服务器的响应后的结果是字节流,需要使用ResponseParser(默认是BinaryResponseParser)对结果的字节流进行解析成相应的字符串,并放到QueryResponse中。
//QueryResponse构造: public QueryResponse( NamedList<Object> res , SolrServer solrServer){ this.setResponse( res ); this.solrServer = solrServer; }
相关推荐
- **4.2.1 AddingData to Solr**:如何使用Solrj添加数据到索引。 - **4.2.2 Directly adding POJOs to Solr**:如何直接将Java对象转换为Solr文档。 - **4.2.3 Reading Data from Solr**:如何从Solr检索数据。 ##...
我们需要提供 Solr 服务器的 URL,以便 SolrJ 可以发起请求。 4. **索引操作** - **创建索引**:使用 `SolrInputDocument` 对象表示要索引的文档,然后调用 `SolrServer` 的 `add` 方法将文档添加到索引。 - **...
在Solr中,可以通过配置连接Redis,将部分搜索结果或热数据存储在Redis中,当用户发起请求时,先从Redis缓存中查找,提高响应速度。 Solr-7.0.0可能包含以下组件和文件: 1. `bin`目录:包含了启动、停止Solr的脚本...
整个流程是:用户请求->SpringMVC接收->调用Service层->Service层通过MyBatis操作数据库->返回结果到Controller->SpringMVC将结果传回视图展示。 在描述中提到,这是一个已经配置好的Maven项目,这意味着该项目使用...
- **定义**:SolrCloud 是 Solr 提供的一种分布式搜索解决方案,适用于需要处理大规模数据集、支持高并发搜索请求以及实现容错机制的应用场景。 - **适用场景**:当单个索引的数据量较小且搜索请求频率不高时,无需...
总结来说,这份工作日志反映了基于Java的Web应用开发流程,包括服务的创建、搜索引擎的集成、数据的处理和传输,以及服务间通信的问题解决。这些技术涵盖了Web开发的多个方面,包括Maven构建系统、搜索引擎服务Solr...
- **Java客户端API**:WebSolrDemo可能使用SolrJ库来与Solr服务器交互,包括添加、更新和查询索引。 - **数据导入工具**:可能是自定义的Java类,用于将应用数据导入Solr。 - **查询接口**:在Web应用程序中,用户...
Solr除了核心功能外,还有许多可选模块,如数据导入处理器(DIH)、SolrCloud(分布式搜索)、SolrJ(Java客户端API)等。对应的JAR文件如dataimporthandler.jar、solr-dataimporthandler-extras.jar、solr-solrj....
- 可以使用多种方式来索引数据,包括 HTTP POST 请求、Solrj API、XML 文件上传等。 #### 五、更新数据(Updating Data) 1. **更新现有文档**: - Solr 支持通过发送更新请求来修改已存在的文档。 - 更新操作...
- Solr 客户端通过 GET 请求向 Solr 服务端发送搜索请求,Solr 服务器则返回包含搜索结果的 XML 文档。 - **Solrj 使用**: - **Solrj** 是一个 Java 接口库,使得 Java 应用程序能够轻松地与 Solr 服务器交互。 ...
索引是Solr的核心功能,它将数据转化为倒排索引,以快速响应查询请求。索引过程包括分析、存储和建立倒排索引。 1.3.2 搜索 搜索是通过查询解析器和评分函数实现的,查询结果按相关性排序返回。 **二、Solr的安装...
- 查询数据:使用 `query()` 方法构造查询请求,并获取结果集。 - 关闭客户端:记得在完成操作后关闭 Solr 客户端以释放资源。 6. **SolrJ 使用示例** - 添加文档: ```java SolrInputDocument doc = new ...
- **Solrj的使用说明**:详细介绍如何使用Solrj进行数据的增删改查操作。 - **创建查询**:如何构建复杂的查询语句。 - **使用SolrJ创建索引**:介绍如何使用SolrJ进行索引操作。 - **Solrj包的结构说明**:Solrj...
4. **索引数据**:使用Solr提供的API或者客户端工具,如SolrJ(Java库)或命令行工具,将需要搜索的数据导入到Solr中建立索引。索引过程可以是批量的,也可以是实时的,取决于你的数据更新频率。 5. **查询与优化**...
- **4.2.1 AddingData to Solr**:通过SolrJ向Solr添加数据的方法。 - **4.2.2 Directly adding POJOsto Solr**:直接将Java对象转换为Solr文档并存储。 - **4.2.3 ReadingData from Solr**:从Solr读取数据的方法。...
- SolrJ 是 Solr 提供的一个 Java API 客户端,允许开发者直接从 Java 应用中发送请求到 Solr 服务器。 - 依赖的 Jar 包包括 solrj-core.jar、solrj-impl.jar 等。 2. **创建 SolrServer 实例**: - 使用 ...
其工作流程通常包括爬虫(Crawler)、索引(Indexing)、查询处理(Query Processing)和结果返回(Result Ranking)四个步骤。Java可以用来实现这些功能,例如使用Jsoup库进行网页抓取,Apache Lucene进行索引和...
#### 三、Solr创建索引流程 1. **建立SolrServer连接** - 使用`CommonsHttpSolrServer`类创建Solr服务器连接。 - 设置必要的参数,如URL、超时时间、最大连接数等。 2. **添加文档** - 创建一个...
SolrJ作为Solr的Java客户端,也在这部分被详细介绍,包括如何通过SolrJ添加数据、创建查询以及索引的创建。 性能调优是任何搜索引擎应用中的重要环节,文档的第六部分对性能调优提供了深入指导。涵盖了Schema设计、...
Spring Web MVC负责处理HTTP请求,而Solrj则与Apache Solr交互,实现商品数据的检索和索引。 在web.xml中,我们配置了Servlet容器(如Tomcat),设置了监听端口和上下文路径。这允许我们的应用在指定的端口上运行,...