当前位置导航:炫浪网>>网络学院>>编程开发>>JAVA教程>>J2EE

Apache Solr的新特性 利用Solr 1.3的新特性和改进

    摘要:在使用Apache Solr 实现更加灵巧的搜索 系列文章发表之后,Apache Solr 又添加了很多新的特性和性能改进。在本文中,Solr 和 Lucene 的负责人 Grant Ingersoll 详细介绍了 Solr 1.3 的新改进,包括分布式搜索、轻松数据库导入、集成拼写检查和新的扩展API 等等。

    Apache Solr 是一个开源的搜索服务器,主要基于 HTTP 和 Apache Lucene.2007 年,我在一个包含有两个部分的系列文章 使用 Apache Solr 实现更加灵巧的搜索 中向 developerWorks 读者介绍了 Solr.由于最近又发布了 Solr 1.3 版本,所有应该详述一下 Solr 自 2007 年以后的许多新特性和增强功能。

    Solr 包含有很多的企业就绪特性,比如轻松的配置和管理、多客户机语言绑定、索引复制、缓存、统计数据以及日志记录。Solr 的 1.3 版本以 Apache Lucene 2.3 版本的巨大性能提升为基础,并增加了一个新的、向后兼容的、即插即用组件架构。该架构使开发人员踊跃创建可以进一步增强 Solr 的组件。例如,1.3 版本就包含能够实现以下功能的组件:

    ●  “您是不是要找……” 拼写检查
    ●  查找 “类似的” Document
    ●  根据编辑输入(又称付费排序)覆盖搜索结果

    另外,查询解析、搜索、分类以及调试这样的现有功能也被组件化了。现在,您可以通过组合这些组件来自定义创建 SolrRequestHandler.最后,Solr 还增加了直接为数据库内容创建索引的功能,并且通过分布式搜索来支持庞大的系统,这一点对很多企业都很重要。

    首先,我将简单复习一下 Solr,然后介绍如何获取和安装最新版本的 Solr 以及升级早期版本的要点。接着,我会介绍 Solr 1.3 的一些重要的增强功能,最后再看一下 Solr 的新特性。

    复习:Solr 概念

    从概念上,Solr 可以被分成四大块:

    ●  模式(schema.xml)
    ●  配置(solrconfig.xml)
    ●  索引
    ●  搜索

    要理解模式,需要先理解 Lucene 对 Document 的注释。一个 Document 包含一个或多个 Field.一个 Field 由名称、内容和给出了内容的处理方法的元数据组成。分析内容可以使其被搜索到。而分析则是通过将一个 Tokenizer 与零个或零个以上的 TokenFilter 链接到一起来完成的,Tokenizer 能够将输入流拆分为单词(标记),TokenFilter 能够改变(例如,词干)或移除标记。Solr 模式能够在没有代码的情况下轻松配置分析过程。它还提供了更强大的键入功能,让您能够将 Field 具体指定为 String、int、float 或其他原有的或自定义的类型。

    在配置方面,solrconfig.xml 文件不仅指定了 Solr 如何处理索引、突出显示、分类、搜索以及其他请求,还指定了用于指定缓存的处理方法的属性,以及用于指定 Lucene 管理索引的方法的属性。配置取决于模式,但模式不取决于配置。

    索引和搜索都是通过向 Solr 服务器发送请求来实现的。索引的实现方法很简单,用 POST 一个描述所有 Field 及其内容的 XML 文档就可以了,如位于 apache-solr-1.3.0/example/exampledocs/ 目录下的 hd.xml 样例文档,如清单 1 所示:

    清单 1. 样例 XML 文档

<add>
<doc>
  <field name="id">SP2514N</field>
  <field name="name">Samsung SpinPoint P120 SP2514N -
  hard drive - 250 GB - ATA-133</field>
  <field name="manu">Samsung Electronics Co. Ltd.</field>
  <field name="cat">electronics</field>
  <field name="cat">hard drive</field>
  <field name="features">7200RPM, 8MB cache, IDE Ultra ATA-133</field>
  <field name="features">NoiseGuard, SilentSeek technology, Fluid
  Dynamic Bearing (FDB) motor</field>
  <field name="price">92</field>
  <field name="popularity">6</field>
  <field name="inStock">true</field>
</doc>
</add>

    要实现搜索则只需要发送 HTTP GET,比如:

http://localhost:8983/solr/select?indent=on&version=2.2&q=ipod&start=0&rows=10
      &fl=*%2Cscore&qt=standard&wt=standard

    在这个例子,查询 ipod 被提交,它要求 10 个结果。(现在,与 Solr 一起提供的还有一个称为 SolrJ 的客户机,它将 HTTP 请求的所有细节信息都隐藏在一组很容易使用的 Java™ 类中。我将在本文 后半部分 介绍 SolrJ)。

    对于从更大的上下文理解 Solr 设计,这些关于 Solr 概念的快速复习已经足够。

共3页 首页 上一页 1 2 3 下一页 尾页 跳转到
相关内容
赞助商链接