`
qindongliang1922
  • 浏览: 2189361 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117686
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:126085
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:60038
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71414
社区版块
存档分类
最新评论

Solr搜索问题笔记(二)

    博客分类:
  • Solr
阅读更多

记录两个问题:
(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>



最后欢迎大家扫码关注微信公众号:我是攻城师(woshigcs),我们一起学习,进步和交流!(woshigcs)
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园,有什么问题随时都可以留言,欢迎大家来访!



12
6
分享到:
评论
3 楼 deepeye 2017-06-19  
楼主,请教个问题,文中提到的“索引两个字段,一个分词,一个不分词”,不理解不分词是啥概念,怎么配置?比如一大段文本,如何设置不分词
2 楼 qindongliang1922 2015-06-26  
zqb666kkk 写道
楼主你好 solr最近 新出的5.2.1版本 配合中文分词的用ik  怎么用? 你知道吗?



可以编译一个最新版的
1 楼 zqb666kkk 2015-06-24  
楼主你好 solr最近 新出的5.2.1版本 配合中文分词的用ik  怎么用? 你知道吗?

相关推荐

    Solr学习笔记。。

    Solr 是一个开源的全文搜索服务器,由Apache Lucene项目维护。它提供了高效、可扩展的搜索和分析功能,常用于大数据量的全文检索、数据分析和分布式搜索应用。本篇文章将详细探讨Solr的安装运行、添加分词器以及配置...

    SOLR学习笔记

    ### SOLR学习笔记 #### 一、Solr简介与特点 **Solr** 是一种开源的企业级搜索平台,它是基于 **Lucene Java** 构建的。Solr 的设计目标是为了提供高性能、高可用性的搜索服务,适用于各种规模的企业级应用。 **...

    solr学习笔记

    ### Solr 学习笔记:关键命令使用说明 Solr 是一个开源的、高性能的全文检索引擎,基于 Java 开发,常被用于大型网站的搜索系统。本文将围绕给定内容中的关键命令进行详细的解析,主要包括 Solr 的启动、集群管理、...

    solr facet 笔记

    Solr 是一个流行的开源搜索引擎,提供了丰富的功能,其中包括 Facet(分面)查询,它能够帮助用户在大量数据中进行高效、多维度的筛选。Facet 查询是数据分析和信息检索中的一个重要工具,允许用户查看数据的不同...

    Solr详细学习笔记.doc

    社区的活跃性意味着用户可以找到大量的文档、示例和论坛支持,有助于解决在实施和优化 Solr 解决方案时遇到的问题。 总之,Apache Solr 是一个强大且灵活的搜索平台,能够满足现代用户对高质量、快速响应的搜索体验...

    solr 笔记

    综上所述,这段代码展示了如何在一个具体的应用场景中集成Solr搜索服务。通过对Solr客户端的初始化、查询及拼写检查等功能的实现,以及对业务逻辑的封装,为用户提供了一个高效且准确的搜索体验。同时,通过依赖注入...

    solr_学习笔记_v1.1

    ### Solr学习笔记_v1.1 - 高性能搜索引擎的核心参数与查询语法详解 #### 一、Query参数:深入理解Solr查询的核心要素 Solr作为高性能的全文搜索引擎,其强大的查询能力很大程度上依赖于一系列精细调整的参数。以下...

    Solr学习笔记.doc

    Solr学习笔记 Solr 是一种基于 Lucene 的搜索服务器,可以满足企业对搜索解决方案的需求。它支持层面搜索、命中醒目显示和多种输出格式,易于安装和配置,並且附带了一个基于 HTTP 的管理界面。 Solr 的主要特点...

    solr 学习笔记

    solr 学习笔记主要涵盖了 Solr 的基本安装与配置,以及 Solr 服务器复制的配置,这些都是初学者需要掌握的基础知识。 Solr 是一款基于 Lucene 的全文搜索引擎,广泛应用于大数据检索和文本分析。在安装 Solr 时,...

    Solr 学习笔记(五)-Solr扩展之分布式索引实例

    在本篇Solr学习笔记中,我们将探讨Solr的分布式索引功能,这对于处理大量数据和实现高可用性至关重要。Solr的分布式索引能力允许我们跨越多个节点分布和处理索引过程,从而提高索引速度和查询性能。在实际应用中,这...

    solr笔记solr笔记

    Solr笔记 Solr 是 Apache 下的一个项目,是使用 Java 开发的,全文搜索服务器。Solr 是基于 Lucene 的,它可以独立运行,独立对外提供搜索和索引服务。Solr 提供了一个灵活的全文搜索解决方案,可以满足各种搜索...

    Apache Solr 架设搜索服务器 学习笔记

    **Apache Solr 架设搜索服务器 学习笔记** Apache Solr 是一款强大的开源全文搜索引擎,基于 Lucene 库,提供了高效、可扩展的搜索和分析功能。它被广泛应用于各种规模的企业,用于构建高性能的搜索应用。这篇学习...

    Solr学习笔记(三)Solr客户端开发实例

    Solr学习笔记(三)——Solr客户端开发实例 在本文中,我们将深入探讨Solr客户端的开发,以便更好地理解如何在实际项目中利用Solr的强大功能。Solr是一款开源的全文搜索引擎,提供了高效的搜索和索引功能。通过Solr...

    solr学习心得和总结笔记

    【Solr学习心得与总结笔记】 一、站内搜索的技术选型 站内搜索的实现方式多样,但针对不同需求,技术选型有所不同: 1. 使用Lucene:Lucene是Java开发的全文检索库,提供了底层的搜索算法,但直接使用Lucene需要...

    solr-4.10.3.rar

    在下载的`solr-4.10.3.tgz.tgz`文件中,通常包含完整的Solr安装包,解压后你可以找到所有必要的文件和目录结构,如`server`、`example`、`dist`等,它们分别对应Solr服务器、示例应用和二进制库。 `xufuli.txt`可能...

    solr笔记教案solr笔记教案

    【Solr笔记教案】 Solr,全称Apache Solr,是一个基于Java的开源全文搜索服务器,它是Apache Lucene项目的衍生产品。Solr以其强大的搜索功能、可配置性、可扩展性和高性能而受到广泛欢迎。它能够独立部署在Servlet...

Global site tag (gtag.js) - Google Analytics