Solr请求过程执行概述

  categories:搜索资料  tags:,   author:

Solr的请求(包括索引数据更新和查询)都是通过 SolrCore类的

execute(SolrRequestHandler handler, SolrQueryRequest req, SolrQueryResponse rsp) 方法来执行的。

其中第一个参数表示执行这一过程的处理器,这些处理器都在handler包下,例如XmlUpdateRequestHandler。

第二个参数表示请求其中包含请求的参数(通常是查询时我们 通过表单传入的参数)以及请求的内容流(例如更新索引时发送的xml格式的数据)。

第三个参数代表响应结果,handler处理请求后会将结果保存在第三个参数中。

SolrQueryRequest 接口的谱系图

 

其中有斜线标示的方法已经废弃

 

SolrQueryResponse接口的谱系图

 

 

索引更新过程

xml格式的更新数据被保存在请求的streams : Iterable<ContentStream>参数中。其中的ContentStream接口谱系图如下:

 

 

注意这里的GiantContentStream是我自己加入的类。 这个类继承自ContentStreamBase并且改写了构造函数与InputStream getStream()方法。这个方法正是更新时被处理器读取数据时调用的关键。看一看这个类的大纲也就明白了这个类的本质。

 

我们看到这样的代码:
final NamedList<Object> responseHeader = new SimpleOrderedMap<Object>();
rsp.add(“responseHeader”, responseHeader);… 阅读全文

solr-wiki—-solr分布式索引

  categories:搜索资料  tags:,   author:
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。

What is Distributed Search?

当一个索引越来越大,达到一个单一的系统无法满足磁盘需求的时候,或者一次简单的查询实在要耗费很多的时间的时候,我们就可以使用solr的分布式索引 了。在分布式索引中,原来的大索引,将会分成多个小索引(索引并不定规模小,之前称之为小索引相对于之前的整个索引来讲的),solr可以将从这些小索引 返回的结果合并,然后返回给客户端。

 

如果当前的solr查询请求能够很快被处理,而你只是希望整个搜索系统的处理能力,那么你可以看看这篇文章http://wiki.apache.org/solr/CollectionDistribution。

 

Distributed Searching

参数“shards”能够使请求被分发到shards所指定的小索引上。

shards 的格式  :host:port/base_url[,host:port/base_url]*

目前只有查询请求才能够被分发。能够处理这种要求分发的请求的组件包括standard request handler 、以及它的子类、任何使用 支持分发的组件的其他handler。

 

目前支持分布式查询的组件有:

  • 查询组件—–根据一个请求返回一个文档集。
  • 面查询组件—–目前只支持排序的数字类的域。solr1.4将可以支持字符类型的域
  • 高亮显示组件
  • debug组件。

对于分布式搜索组件,你也可以参考   WritingDistributedSearchComponents 。

 

Distributed Searching Limitations

  • 索引的文档必须有一个 唯一键
  • 当拥有相同的id的文档被查询到时,solr将选择第一个文档。其他的结果将被丢弃。
阅读全文

Solr Index Replication

  categories:搜索资料  tags:,   author:

Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。

来源:https://cwiki.apache.org/confluence/display/solr/Index+Replication

The Lucene index format has changed with Solr 4. As a result, once you upgrade, previous versions of Solr will no longer be able to read the rest of your indices. In a master/slave configuration, all
阅读全文

Nodes, Cores, Clusters and Leaders

  categories:资料  tags:,   author:

Nodes and Cores

In SolrCloud, a node is Java Virtual Machine instance running Solr, commonly called a server. Each Solr core can also be considered a node. Any node can contain both an instance of Solr and various kinds of … 阅读全文

lucene query time join (关联搜索)

  categories:搜索资料  tags:,   author:

query  time join  已经在solr存在一段时间了但是lucene中有这个终归是好事,多一种选择嘛,实现这种关联的document还是很实用的,可以实现部分关联查询;

更新属性的时候也可以设计好结构,更新部分索引了。

这个解释有点费劲,还是看代码吧,

  1. final String idField = “id”;
  2. +    final String toField = “productId”;
  3. +
  4. +    Directory dir = newDirectory();
  5. +    RandomIndexWriter w = new RandomIndexWriter(
  6. +        random,
  7. +        dir,
  8. +        newIndexWriterConfig(TEST_VERSION_CURRENT,
  9. +            new MockAnalyzer(random)).setMergePolicy(newLogMergePolicy()));
  10. +
  11. +   
阅读全文

Combining Distribution and Replication

  categories:搜索资料  tags:,   author:

When your index is too large for a single machine and you have a query volume that single shards cannot keep up with, it’s time to replicate each shard in your distributed search setup.

The idea is to combine distributed … 阅读全文

Running Solr on Tomcat

  categories:搜索资料  tags:, ,   author:

本文介绍solr在tomcat上部署的情况。Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎

来源:https://cwiki.apache.org/confluence/display/solr/Running+Solr+on+Tomcat

solr comes with an example schema and scripts for running on Jetty. The next section describes some of the details of how things work “under the hood,” and covers running multiple Solr instances and deploying Solr using … 阅读全文

solr Merging Indexes

  categories:搜索资料  tags:,   author:

Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。本文主要介绍solr的索引合并的相关情况

 

来源:https://cwiki.apache.org/confluence/display/solr/Merging+Indexes

if you need to combine indexes from two different projects or from multiple servers previously used in a distributed configuration, you can use either the IndexMergeTool included in lucene-misc or the CoreAdminHandler.

To merge indexes, they … 阅读全文

CoreAdminHandler Parameters and Usage

  categories:搜索资料  tags:,   author:

The CoreAdminHandler is a special SolrRequestHandler that is used to manage Solr cores. Unlike normal SolrRequestHandlers, the CoreAdminHandler is not attached to a single core. Instead, it manages all the cores running in a single Solr instance. Only one CoreAdminHandler … 阅读全文

Moving to the New solr.xml Format

  categories:搜索资料  tags:,   author:

Solr是一个独立的企业级搜索应用服务器,Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。

来源:https://cwiki.apache.org/confluence/display/solr/Moving+to+the+New+solr.xml+Format

Migration from old-style solr.xml to core discovery is very straightforward. First, modify the solr.xml file from the legacy format to the discovery format.

In general there is a direct analog from the legacy format to the new

阅读全文


快乐成长 每天进步一点点