Solr全文检索实战:查询参数与功能解析

需积分: 10 5 下载量 147 浏览量 更新于2024-09-11 收藏 260KB DOC 举报
"solr全文检索开发" Solr是一款基于Java的开源全文检索搜索引擎,它可以提供高效、可扩展的搜索功能,同时支持地理位置信息的检索。Solr被广泛应用于各种Web开发场景,帮助用户快速准确地从大量数据中查找所需信息。 在Solr中,查询参数的设置对于优化搜索体验至关重要。以下是一些核心的查询参数: 1. **q**: 这是必填的查询字符串,用于指定用户输入的搜索关键字。 2. **q.op**: 用于覆盖默认的逻辑运算符,默认情况下,如果查询字符串中有空格,Solr会使用"AND"操作符连接多个词。你可以通过设置`q.op`来改变这一行为,例如设置为"OR"。 3. **df**: 默认查询字段(Default Field),当用户没有明确指定字段时,Solr将在这个字段中进行搜索。 4. **qt**: querytype,允许你指定使用哪种QueryHandler处理查询请求,如"standard"是默认的。 5. **wt**: 指定查询结果的输出格式,如XML、JSON、Python等。默认为XML,但可以根据需要选择其他格式。 6. **echoHandler**: 如果设置为true,查询结果将包含所使用的QueryHandler名称。 7. **echoParams**: 控制查询参数的显示,可以选择none、explicit或all,以决定在结果中显示哪些参数。 8. **indent**: 当设置为true或on时,返回的JSON、PHP等格式的结果将以缩进的方式显示,便于阅读,尤其是在调试时。 9. **version**: 查询语法的版本,通常无需手动设置,Solr会自动指定默认值。 除了这些基础参数,还有其他一些通用的查询参数: 1. **sort**: 定义搜索结果的排序方式,可以按字段进行升序或降序排列。 2. **start**: 用于分页,指定返回结果的起始索引。 3. **rows**: 设置每页返回的记录数量。 4. **fq**: filterquery,这是一个过滤器查询,可以提高查询效率,比如用于范围查询、分类过滤等。 5. **functionQuery**: 函数查询允许你使用Solr内置的函数或者自定义函数来对结果进行评分或者排序,提供了更复杂的查询策略。 Solr还支持高级特性,如 faceting(分面搜索)、highlighting(高亮显示)、spell checking(拼写检查)和分布式搜索,这些都是构建强大搜索解决方案的关键组件。通过深入理解和灵活运用这些特性,开发者可以构建出满足各种需求的高效全文检索系统。
2014-04-08 上传
1 概述 4 1.1 企业搜索引擎方案选型 4 1.2 Solr的特性 4 1.2.1 Solr使用Lucene并且进行了扩展 4 1.2.2 Schema(模式) 5 1.2.3 查询 5 1.2.4 核心 5 1.2.5 缓存 5 1.2.6 复制 6 1.2.7 管理接口 6 1.3 Solr服务原理 6 1.3.1 索引 6 1.3.2 搜索 7 1.4 源码结构 8 1.4.1 目录结构说明 8 1.4.2 Solr home说明 9 1.4.3 solr的各包的说明 10 1.5 版本说明 11 1.5.1 1.3版本 11 1.5.2 1.4版本 12 1.6 分布式和复制 Solr 架构 13 2 Solr的安装与配置 13 2.1 在Tomcat下Solr安装 13 2.1.1 安装准备 13 2.1.2 安装过程 14 2.1.3 验证安装 15 2.2 中文分词配置 15 2.2.1 mmseg4j 15 2.2.2 paoding 19 2.3 多核(MultiCore)配置 22 2.3.1 MultiCore的配置方法 22 2.3.2 为何使用多core ? 23 2.4 配置文件说明 23 2.4.1 schema.xml 24 2.4.2 solrconfig.xml 25 3 Solr的应用 29 3.1 SOLR应用概述 29 3.1.1 Solr的应用模式 29 3.1.2 SOLR的使用过程说明 30 3.2 一个简单的例子 30 3.2.1 Solr Schema 设计 30 3.2.2 构建索引 30 3.2.3 搜索测试 31 3.3 搜索引擎的规划设计 32 3.3.1 定义业务模型 32 3.3.2 定制索引服务 34 3.3.3 定制搜索服务 34 3.4 搜索引擎配置 34 3.4.1 Solr Schema 设计(如何定制索引的结构?) 34 3.5 如何进行索引操作? 36 3.5.1 基本索引操作 36 3.5.2 批量索引操作 37 3.6 如何进行搜索 39 3.6.1 搜索语法 39 3.6.2 排序 42 3.6.3 字段增加权重 42 3.6.4 Solr分词器、过滤器、分析器 42 3.6.5 Solr高亮使用 46 4 SolrJ的用法 46 4.1 搜索接口的调用实例 46 4.2 Solrj的使用说明 47 4.2.1 Adding Data to Solr 47 4.2.2 Directly adding POJOs to Solr 49 4.2.3 Reading Data from Solr 51 4.3 创建查询 51 4.4 使用 SolrJ 创建索引 52 4.5 Solrj包的结构说明 53 4.5.1 CommonsHttpSolrServer 53 4.5.2 Setting XMLResponseParser 53 4.5.3 Changing other Connection Settings 53 4.5.4 EmbeddedSolrServer 54 5 Solr的实际应用测试报告 54 5.1 线下压力测试报告 54 5.2 线上环境运行报告 54 6 solr性能调优 55 6.1 Schema Design Considerations 55 6.1.1 indexed fields 55 6.1.2 stored fields 55 6.2 Configuration Considerations 55 6.2.1 mergeFactor 55 6.2.2 mergeFactor Tradeoffs 56 6.3 Cache autoWarm Count Considerations 56 6.4 Cache hit rate(缓存命中率) 56 6.5 Explicit Warming of Sort Fields 56 6.6 Optimization Considerations 56 6.7 Updates and Commit Frequency Tradeoffs 56 6.8 Query Response Compression 57 6.9 Embedded vs HTTP Post 57 6.10 RAM Usage Considerations(内存方面的考虑) 57 6.10.1 OutOfMemoryErrors 57 6.10.2 Memory allocated to the Java VM 57 7 FAQ 58 7.1 出现乱码或者查不到结果的排查方法: 58