高级搜索技术–Filter

  categories:搜索资料  author:

来源:互联网

Filter顾名思义 就是用来过虑搜索结果的,在Lucene中有3个过虑器

1,DateFilter constrains the document space to only documents with a specified date field within a given range of dates.

2,QueryFilter uses the results of query as the searchable document space for a new query.

3,CachingWrapperFilter is a

阅读全文

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将选择第一个文档。其他的结果将被丢弃。
阅读全文

lucene通过修改boost值改善index索引

  categories:搜索资料  author:

来源:互联网

并不是所有的Document和Field是平等创建的。Document增量是个使得这种需求能够简单实现的一个特征。默认情况下,所有的 Document都没有增量,他们都有相同的增量因数1.0。通过改变某个Document的增量因数,可以让Lucene认为它比索引中的其他 Document更重要或更不重要。在索引的时候只需执行setBoost(float)方法。

看两个示例,就能明白其中的用法。

示例1,使用默认的的boost

[java] view plaincopy
  1. package com.cn;
  2. import org.apache.lucene.analysis.standard.StandardAnalyzer;
  3. import org.apache.lucene.document.Document;
  4. import org.apache.lucene.document.Field;
  5. import org.apache.lucene.index.IndexWriter;
  6. import org.apache.lucene.index.IndexWriterConfig;
  7. import org.apache.lucene.index.Term;
  8. import org.apache.lucene.search.IndexSearcher;
  9. import org.apache.lucene.search.Query;
  10. import org.apache.lucene.search.ScoreDoc;
  11. import org.apache.lucene.search.TermQuery;
  12. import org.apache.lucene.search.TopDocs;
  13. import org.apache.lucene.store.Directory;
  14. import org.apache.lucene.store.RAMDirectory;
  15. import org.apache.lucene.util.Version;
  16. public 
阅读全文

lucene 3.4 contrib/facet 切面搜索

  categories:搜索资料  author:
来源:互联网
solr  有facet  search  ,BOBO也有;现在lucene3.4之后也有了,这个是贡献版本,在apache 官方的包里面有提供,这种功能对于分组统计和类别统计是一个很好的帮手;

有了这个就不用羡慕solr了,不是我抗拒solr,只是像我们公司有时间让我们开发的情况下,我更偏向于底层点的api开发,lucene更得心应手。

再说现在的solr没有近实时搜索,听说要4.0后有。

废话不说,直接上代码

 

  1. public class Indexer {
  2. //需要索引的信息
  3. public static String[] docTitles = {
  4. “white car”,
  5. “white dog”,
  6. };
  7. public static String[] docTexts = {
  8. “the white car is the one I want.”,
阅读全文

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
阅读全文

lucene (2.9— 3.6) 范围搜索优化

  categories:搜索资料  author:

来源:互联网

原先在处理范围搜索的时候,发现了SortField.BYTE 但是在建索引的时候NumericField并没有setByteValue,只有(int/ long  / folat /double),很是奇怪;

逛了一些论坛,也没见啥好的解释;后来看到了

NumericUtils

的解释,很有意思,

http://lucene.apache.org/core/old_versioned_docs/versions/2_9_0/api/all/org/apache/lucene/util/NumericUtils.html#doubleToSortableLong%28double%29

public final class NumericUtils
extends Object

This is a helper class to generate prefix-encoded representations for numerical values and supplies converters to represent float/double values as sortable integers/longs.

To … 阅读全文

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 … 阅读全文



快乐成长 每天进步一点点      京ICP备18032580号-1