记录两个问题:
(1)在配置分词的场景中,如何让精确查询的排在前面,模糊查询的排在后面,这个需求算是比较常见的,但如果你是在数据库中,那么就非常容易了,where xxx=xxx 出来就是精确匹配的,但是在Lucene或者Solr中,反到有点诡异了,其实也不算问题,如果熟悉的Lucene的评分机制,理解起来则会很容易,在Lucene中90%的情况下,都是精确匹配的排在上面,但是还有10%的几率会导致,精确匹配的不会排在第一位,但是肯定是在top10里面的,虽然误差很小,但让用户和测试人员就很不理解,在这里就不解释了,精确匹配没排在top1确实有点说不过去,关于具体的原因,请查看散仙的前一篇文章,
http://qindongliang.iteye.com/blog/2218352
下面谈谈,如何解决:
其实还是采用了,最普遍的用法,索引两个字段,一个分词,一个不分词,但是他们都索引了,在查询时,同时查询这两个字段,分词的字段:模糊查,不分词的字段:精确查,这样以来既能保证,召全率,也能保证查准率,可以说是一种不错的方案。
当然如果我们能从分词器下手,直接在分词的时候,就保留一份原始的数据,作为索引,这样以来确实也可以,但是中文的分词器,都是基于词典切分的,都是以最小的单元的作为token的,而不是一整个token,所以,只能强制的把过来的token,作为一整个term存储一次,这样做其实跟加一个字段,没啥区别,所以具体场景,具体对待。
(2)关于Solr的String类型的Field一个问题,String字段,是一个不会分词的字段,但是可以索引和被搜索,但是实际情况有点诧异,如果一个词组里面包含()()这样的小括号,搜索时候,精确匹配就会出现问题,因为索引里面这个小括号,无论是中文的括号,还是英文的,都会被转义成其他的编码,目前为止只发现这一个符号,会被改变,其他的大括号,中括号,目前还没发现,被改变,所以,在索引时候,最好把特殊字符,给过滤掉,如何在Solr里配置:
- <!-- 配置一个支持正则过滤的分词器,过滤企业名带非法符号的名称 -->
- <fieldType name="qstring" class="solr.TextField" positionIncrementGap="100">
- <analyzer>
- <tokenizer class="solr.KeywordTokenizerFactory"/>
- <filter class="solr.PatternReplaceFilterFactory" pattern="([[()()]])" replacement="" replace="all"/>
- </analyzer>
- </fieldType>
相关推荐
### Solr 学习知识点详解 #### 一、Solr 概述 - **定义**:Solr 是 Apache 下的一个顶级开源项目,采用 Java 开发,它是基于 Lucene 的全文搜索服务器。Solr 可以独立运行在 Jetty、Tomcat 等 Servlet 容器中。 -...
【Solr 学习资料详解】 Solr 是一个基于 Apache Lucene 的全文搜索服务器,它为企业提供了高效、可扩展的搜索解决方案。Solr 不仅提供了丰富的查询语言,还优化了索引和搜索性能,使得在大型网站、电子商务平台等...
solr 学习笔记主要涵盖了 Solr 的基本安装与配置,以及 Solr 服务器复制的配置,这些都是初学者需要掌握的基础知识。 Solr 是一款基于 Lucene 的全文搜索引擎,广泛应用于大数据检索和文本分析。在安装 Solr 时,...
### Solr 学习笔记:关键命令使用说明 Solr 是一个开源的、高性能的全文检索引擎,基于 Java 开发,常被用于大型网站的搜索系统。本文将围绕给定内容中的关键命令进行详细的解析,主要包括 Solr 的启动、集群管理、...
### SOLR学习笔记 #### 一、Solr简介与特点 **Solr** 是一种开源的企业级搜索平台,它是基于 **Lucene Java** 构建的。Solr 的设计目标是为了提供高性能、高可用性的搜索服务,适用于各种规模的企业级应用。 **...
### Solr学习入门教程知识点详解 #### 一、Solr概览 Solr是一个开源的企业级搜索服务器,采用Java作为底层开发语言,具备高度的可扩展性和灵活性。它通过标准的HTTP协议和XML格式进行通信,这意味着即使不精通Java...
Solr 学习文档简介 Solr 是 Apache 下的一个顶级开源项目,采用 Java 开发,是基于 Lucene 的全文搜索服务。Solr 可以独立运行在 Jetty、Tomcat 等这些 Servlet 容器中。Solr 提供了一个管理界面,通过管理界面可以...
**SOLR学习指南** Apache SOLR是一款开源的企业级全文搜索引擎,它被广泛应用于网站内容检索、电商商品搜索、文档数据库搜索等领域。SOLR以其高效、可扩展性以及丰富的特性和配置选项而受到广大开发者的青睐。在这...
【Solr学习总结配置方法】 Solr是一款基于Apache Lucene的全文检索服务器,它提供了分布式、可扩展且高度可用的搜索和分析能力。Solr的主要特点是简化了索引创建和查询服务,使得开发者只需编写少量代码即可实现...
Solr学习笔记 Solr 是一种基于 Lucene 的搜索服务器,可以满足企业对搜索解决方案的需求。它支持层面搜索、命中醒目显示和多种输出格式,易于安装和配置,並且附带了一个基于 HTTP 的管理界面。 Solr 的主要特点...
在本篇Solr学习笔记中,我们将探讨Solr的分布式索引功能,这对于处理大量数据和实现高可用性至关重要。Solr的分布式索引能力允许我们跨越多个节点分布和处理索引过程,从而提高索引速度和查询性能。在实际应用中,这...
solr学习入门经典教程,赶紧学习吧,从solr的搭建讲起,中文分词器的配置
【Solr学习心得与总结笔记】 一、站内搜索的技术选型 站内搜索的实现方式多样,但针对不同需求,技术选型有所不同: 1. 使用Lucene:Lucene是Java开发的全文检索库,提供了底层的搜索算法,但直接使用Lucene需要...
Solr学习笔记(三)——Solr客户端开发实例 在本文中,我们将深入探讨Solr客户端的开发,以便更好地理解如何在实际项目中利用Solr的强大功能。Solr是一款开源的全文搜索引擎,提供了高效的搜索和索引功能。通过Solr...
Solr学习 Solr是Apache Lucene项目的一个子项目,是一款功能强大的全文搜索引擎服务器,它提供了分布式、可扩展和高可用性的搜索和分析能力。在深入理解Solr之前,我们首先要明白什么是搜索引擎。搜索引擎的基本...
Solr 是一个开源的全文搜索服务器,由Apache Lucene项目维护。它提供了高效、可扩展的搜索和分析功能,常用于大数据量的全文检索、数据分析和分布式搜索应用。本篇文章将详细探讨Solr的安装运行、添加分词器以及配置...
标题“Solr学习 One”揭示了我们即将探讨的是Apache Solr的相关知识,这是一个流行的开源全文搜索引擎,用于处理大规模数据的搜索和分析。Solr利用高效的索引和查询机制,为各种应用程序提供快速、可扩展的搜索功能...