运行solr是个很简单的事,如何让solr高效运行你的项目,这个就不容易了。要考虑的因素太多。这里很重要一个就是对solr的配置要了解。懂得配置文件每个配置项的含义,这样操作起来就会如鱼得水!
在solr里面主要的就是solr的主目录下面的schema.xml,solrConfig.xml,如果你看过前两篇文章的话,你应该知道solr的主目录处于什么位置(c:\solr-tomcat\solr\conf\)。
在这个文章中,我们首先来说说这个schema.xml。
schema.xml,这个相当于数据表配置文件,它定义了加入索引的数据的数据类型的。主要包括types、fields和其他的一些缺省设置。
1》首先需要在types结点内定义一个FieldType子结点,包括name,class,positionIncrementGap等等一些参数,name就是这个FieldType的名称,class指向org.apache.solr.analysis包里面对应的class名称,用来定义这个类型的行为。在FieldType定义的时候最重要的就是定义这个类型的数据在建立索引和进行查询的时候要使用的分析器analyzer,包括分词和过滤。在例子中text这个FieldType在定义的时候,在index的analyzer中使用 solr.WhitespaceTokenizerFactory这个分词包,就是空格分词,然后使用 solr.StopFilterFactory,solr.WordDelimiterFilterFactory,solr.LowerCaseFilterFactory,solr.EnglishPorterFilterFactory,solr.RemoveDuplicatesTokenFilterFactory 这几个过滤器。在向索引库中添加text类型的索引的时候,Solr会首先用空格进行分词,然后把分词结果依次使用指定的过滤器进行过滤,最后剩下的结果才会加入到索引库中以备查询。Solr的analysis包并没有带支持中文的包,在第二篇文章中详细讲了怎样添加paoding中文分词器,详情请参见http://lianj-lee.iteye.com/blog/424474
2》接下来的工作就是在fields结点内定义具体的字段(类似数据库中的字段),就是filed,filed定义包括name,type(为之前定义过的各种FieldType),indexed(是否被索引),stored(是否被储存),multiValued(是否有多个值)等等。
例:
- <fields>
- <field name="id" type="integer" indexed="true" stored="true" required="true" />
- <field name="name" type="text" indexed="true" stored="true" />
- <field name="summary" type="text" indexed="true" stored="true" />
- <field name="author" type="string" indexed="true" stored="true" />
- <field name="date" type="date" indexed="false" stored="true" />
- <field name="content" type="text" indexed="true" stored="false" />
- <field name="keywords" type="keyword_text" indexed="true" stored="false" multiValued="true" />
- <field name="all" type="text" indexed="true" stored="false" multiValued="true"/>
- </fields>
<fields>
<field name="id" type="integer" indexed="true" stored="true" required="true" />
<field name="name" type="text" indexed="true" stored="true" />
<field name="summary" type="text" indexed="true" stored="true" />
<field name="author" type="string" indexed="true" stored="true" />
<field name="date" type="date" indexed="false" stored="true" />
<field name="content" type="text" indexed="true" stored="false" />
<field name="keywords" type="keyword_text" indexed="true" stored="false" multiValued="true" />
<field name="all" type="text" indexed="true" stored="false" multiValued="true"/>
</fields>
field的定义相当重要,有几个技巧需注意一下,对可能存在多值得字段尽量设置multiValued属性为true,避免建索引是抛出错误;如果不需要存储相应字段值,尽量将stored属性设为false。
3》建议建立了一个拷贝字段,将所有的全文字段复制到一个字段中,以便进行统一的检索:
- <field name="all" type="text" indexed="true" stored="false" multiValued="true"/>
<field name="all" type="text" indexed="true" stored="false" multiValued="true"/>
并在拷贝字段结点处完成拷贝设置:
- <copyField source="name" dest="all"/>
- <copyField source="summary" dest="all"/>
<copyField source="name" dest="all"/>
<copyField source="summary" dest="all"/>
4》除此之外,还可以定义动态字段,所谓动态字段就是不用指定具体的名称,只要定义字段名称的规则,例如定义一个dynamicField,name 为*_i,定义它的type为text,那么在使用这个字段的时候,任何以_i结尾的字段都被认为是符合这个定义的,例如:name_i,gender_i,school_i等。
schema.xml配置文件大体上就是这样,更多细节请参见solr wiki http://wiki.apache.org/solr/SchemaXml。如果以后有时间,我会定时更新这篇文章,以争取能让更多初学者带来便利。
分享到:
相关推荐
本文将详细阐述如何利用SOLR搭建一个企业搜索平台,包括所需环境、配置步骤以及中文分词的设置。 一、SOLR搭建企业搜索平台 1. **运行环境** - **运行容器**:Tomcat 6.0.20 - **Solr版本**:apache-solr-1.4.0 ...
标题中的“利用Solr搭建你的搜索引擎”意味着我们将探讨Apache Solr这一开源全文搜索平台的搭建过程。Solr是基于Lucene库的,提供了一个高效、可扩展的搜索和导航功能,广泛应用于各种企业的数据检索需求。 Solr的...
### Apache Solr 企业搜索引擎教程知识点总结 #### 1. Apache Solr 概述 - **Solr**:Apache Solr 是一款高度可扩展且高性能的企业级搜索平台,由Apache软件基金会维护。它是一个开源搜索服务器,使用Java语言编写...
基于Solr构建企业级信息检索系统是一种可行且有效的解决方案。通过深入分析企业需求,精心设计系统架构,可以显著提升企业内部信息检索的效率和用户体验,助力企业提升核心竞争力。Solr的成熟技术和灵活特性使其成为...
本篇文章将详细阐述如何利用Solr实现京东搜索的功能。 一、关键词搜索 在商品信息搜索中,关键词搜索是最基础也最重要的功能。用户输入关键词后,Solr会通过分析器对关键词进行分词处理,然后在索引库中匹配与之...
Apache Solr 是一个开源的全文搜索引擎,由Apache软件基金会维护,是Lucene项目的一部分。它提供了高效、可扩展的搜索和导航功能...熟悉这些知识点,可以帮助你更好地利用Apache Solr构建高性能的企业级搜索解决方案。
总的来说,Solr-9.0.0是一个强大且灵活的搜索平台,适用于需要大量数据搜索和分析的场景,如电商网站的商品搜索、新闻网站的内容检索、企业内部的文档搜索等。通过深入理解和熟练使用Solr,你可以为你的应用程序提供...
Solr搜索引擎的使用介绍 Solr,全称为Apache Solr,是Apache软件基金会的一个开源项目,基于Java开发,是一款...通过理解其核心概念、特性以及应用场景,我们可以充分利用Solr来提升系统的搜索性能,优化用户体验。
Solr是Apache软件基金会的一个开源项目,它是基于Java的全文搜索服务器,采用了Lucene库作为其...通过深入学习和实践这些内容,开发者可以掌握如何利用Solr构建高性能的全文搜索引擎,解决各种实际问题,提升系统性能。
根据提供的信息,我们可以总结出以下关于Apache Solr的相关知识点: ### Apache Solr简介 Apache Solr是一款开源的、高性能的企业级...在Java开发环境下,利用Solr进行高效的搜索服务构建是完全可行且易于实现的。
Solr是Apache软件基金会的一个开源项目,它是基于Java的全文搜索服务器,被广泛应用于企业级搜索引擎的构建。源码分析是深入理解一个软件系统工作原理的重要途径,对于Solr这样的复杂系统尤其如此。这里我们将围绕...
《开源企业搜索引擎Solr的应用教程》 在当今信息爆炸的时代,高效、精准的搜索成为企业的核心竞争力之一。开源的企业搜索引擎Solr...通过深入学习和实践,开发者能够充分利用Solr的优势,为企业构建高性能的搜索应用。
ES(ElasticSearch)和Solr都是基于Lucene的搜索引擎,它们各自提供了一套搜索框架,用于实现高效的全文搜索功能。由于两者都是在Apache License 2下开源的,因此在选择使用哪种搜索方案时,需要根据不同的使用场景...
Solr更倾向于定制化和灵活性,适合有特殊需求的大型企业搜索解决方案;而Elasticsearch则注重易用性和开箱即用的体验,适用于快速构建原型和小型到中型的应用。 **总结** Solr、Elasticsearch和Lucene都是现代搜索...
Solr,全称为Apache Solr,是一款开源的企业级全文搜索引擎,由Java编写,它提供了高效、可扩展的搜索和分析功能。在这个“solr导航搜索工具+文档+配置代码”压缩包中,包含了Solr的相关资源,可以帮助我们快速理解...
【Solr自学详细教程,吐血总结】 在IT领域,特别是在大数据处理和信息检索中,Apache Solr扮演着至关重要的角色。...通过学习和实践,开发者可以掌握如何利用Solr构建高性能的站内搜索,提升用户的搜索体验。
Solr是中国Apache软件基金会开发的一款开源全文搜索引擎,它基于Java平台,可以实现高效、可扩展的搜索和分析功能。...通过深入理解和实践,可以进一步掌握如何利用Solr构建高性能的企业级搜索解决方案。
Solr是一个功能强大、高度可定制的企业级搜索平台,基于Lucene构建,但提供了更多面向应用的特性。无论是用于网站搜索、文档检索还是大数据分析,Solr都是一个值得深入学习和掌握的工具。通过理解其架构、配置和优化...