`
flysnowxf
  • 浏览: 578816 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

solr查询不使用query analyzer中文分词的问题解决

阅读更多
schema.xml已配置query的中文分词器,但搜索的结果不尽如意,solr并没有按照分词来进行搜索。比如搜索“我要吃饭了”,并没有把包含“吃饭”的文档给搜索出来。解决过程如下:

1.query analyzer使用IK,配置如下:
<analyzer type ="query" >
       <tokenizer class ="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="false" />

2.query analyzer效果如图:

我要吃饭了,可分词为“要吃”和“吃饭”。如果搜索“我要吃饭了”,solr应该把这两个词以OR的方式去搜索,结果却一厢情愿。

3.引用http://blog.chenlb.com/2010/08/get-solr-analysis-word.html
“这个问题的根本原因是 lucene / solr 使用的查询解析器生成的 Query 是短语查询。短语查询默认又是连续的词中没有其它字符。所以会找不到。
目前我知的方式大概有二种:
1、查询前分词一遍,把分出的词用空格分开,再去搜索(叫它为查询预处理)。查询前分词可以上面的接口。
2、扩展 solr query parser,返回 boolean query。”


4.使用方法1解决问题
即搜索前,先处理一下query analyzer的分词,然后再搜索。
solr分词的接口为:http://localhost:8080/solr/analysis/field?q=我要吃饭了
如果为多核配置,类似于http://localhost:8080/solr/核心名/analysis/field?q=我要吃饭了

结果返回:
<response>
     <lst name="responseHeader">
          <int name="status">0</int>
          <int name="QTime">0</int>
     </lst>
     <lst name="analysis">
          <lst name="field_types" />
          <lst name="field_names">
               <lst name="text">
                    <lst name="query">
                         <arr name="org.wltea.analyzer.lucene.IKTokenizer">
                              <lst>
                                   <str name="text">要吃</str>
                                   <str name="type">word</str>
                                   <int name="start">1</int>
                                   <int name="end">3</int>
                                   <int name="position">2</int>
                              </lst>
                              <lst>
                                   <str name="text">吃饭</str>
                                   <str name="type">word</str>
                                   <int name="start">2</int>
                                   <int name="end">4</int>
                                   <int name="position">3</int>
                              </lst>
                         </arr>
                    </lst>
               </lst>
          </lst>
     </lst>
</response>
注意<lst name="query">元素下可能有filter。我们只需要解析以上的xml,就可以获取到分词列表了。

最后,将分词列表组装成类似(要吃 OR 吃饭)的格式,就可以搜索到想要的结果。例如:
http://localhost:8080/solr/select/?q=(要吃 OR 吃饭)
分享到:
评论

相关推荐

    ikanalyzer-solr8.4.0_solr8_solr_ikanalyzer_中文分词_

    ikanalyzer 是一个专门为Java开发的中文...总之,ikanalyzer-solr8.4.0 是 Solr 8.4.0 版本下用于中文分词的重要工具,通过合理的配置和使用,可以显著提高 Solr 对中文文本的处理能力,从而提升搜索质量和用户体验。

    支持solr 5.3.0的IKAnalyzer中文分词器

    IKAnalyzer中文分词器本身已经不支持最新的solr 5,集成到solr中分词会报错,这里将解决了solr 5支持问题的最新IK包共享出来,希望能帮到各位! 附上IK在schema.xml中的配置: &lt;fieldType name="text_ik" class="...

    Solr6.0集成IK-Analyzer分词器

    在Solr中集成IK Analyzer,能够更好地对中文内容进行索引和搜索,提高查询效率和准确性。 **Solr6.0集成IK Analyzer的过程主要包括以下几个步骤:** 1. **下载和安装** - 首先,你需要下载最新版本的Solr6.0和IK ...

    solr中文分词jar包ik-analyzer 含class配置 ik-analyzer-7.5.0

    Ik Analyzer是一款针对Java平台设计的、专门用于中文分词的开源工具,它在Solr中扮演着至关重要的角色。 标题提到的"ik-analyzer 7.5.0"是Ik Analyzer的一个特定版本,这个版本包含了对Solr的支持,并且提供了类...

    solr5.x(含5.4)可用的ikanalyzer中文分词

    solr5.x(含5.4)可用的ikanalyzer中文分词 &lt;fieldType name="text_ik" class="solr.TextField"&gt; &lt;analyzer type="index"&gt; &lt;tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" /&gt; ...

    solr 中文分词其IKAnalyzer 支持solr版本5.X-7.X

    6. **使用索引与查询**:现在,Solr已经具备了使用IKAnalyzer进行中文分词的能力,可以对输入的中文文本进行索引和查询。 IKAnalyzer的特性包括支持自定义词典、动态加载、支持多种分词模式等,这些都使其在Solr中...

    ik-analyzer-solr7.zip

    在描述中提到的"ik-analyzer-solr7.zip"是一个专门为Apache Solr 7.x版本定制的IKAnalyzer分词器插件。Solr是Apache软件基金会的一个项目,它是一款强大的全文搜索服务器,提供了诸如索引、搜索、高亮显示、拼写检查...

    solr 5.4.0 完整包,包含ikanalyzer 中文分词器(新)

    综上所述,"solr 5.4.0 完整包,包含ikanalyzer 中文分词器"是一个强大且功能丰富的搜索解决方案,适用于需要处理大量中文数据的场景。其易用的配置和强大的搜索能力使其成为企业级搜索应用的理想选择。

    支持solr5.5 solr6.0中IK分词需要的资料

    IK分词器(Intelligent Chinese Analyzer for Solr,简称IK)是一款针对中文的高效分词工具,专为Solr和Lucene设计,旨在提高中文文本检索的准确性。 标题和描述提到的是针对Solr 5.5和Solr 6.0版本的IK分词器支持...

    solr6对应的IKAnalyzer分词器

    solr6对应的IKAnalyzer分词器jar包,使用方法: 1. 添加分词器的jar文件:在文件夹`contrib`下新建一个文件夹`rd-lib`,并将`IKAnalyzer2012_u6.jar`拷贝进来,这个文件夹用来存放第三方jar文件,后面做数据导入时候...

    solr配置ikanalyzer分词文件以使用说明

    在这个说明中,我们将详细讲解如何在Solr 6.0中配置ikanalyzer分词文件,以实现对中文文本的有效处理。 1. **ikanalyzer简介** ikanalyzer是一款专门为Java语言设计的开源中文分词库,它基于Apache Lucene项目,...

    solr6.x_IK中文分词工具

    中文分词是将连续的汉字序列切分成具有语义的词汇单元的过程,因为中文没有像英文那样的自然分隔符(如空格),所以分词是中文信息处理的基础步骤。准确的分词能够提升搜索结果的相关性和准确性。 IK中文分词工具...

    IK分词solr5.0.0

    首先,IK分词器全称为“Intelligent Chinese Analyzer for Solr”,由北京大学的开源社区开发,旨在提供对中文文本更精确的分词处理。IK分词器有两个主要版本:标准版和智能版。标准版支持基本的分词功能,而智能版...

    solr6.x的IKAnalyzer配置智能分词

    Solr是Apache Lucene项目的一个开源搜索引擎服务器,它提供了全文检索、...总之,配置IKAnalyzer智能分词对于提升Solr在处理中文数据时的检索效果至关重要。理解并正确配置这些步骤,可以显著改善你的搜索引擎的性能。

    solr5.5.x的中文分词IKAnalyzer

    标题 "solr5.5.x的中文分词IKAnalyzer" 指的是在Apache Solr 5.5.x版本中使用IKAnalyzer进行中文文本的分词处理。Solr是一款流行的开源搜索服务器,它允许对大量数据进行高效、复杂的全文检索。而中文分词是中文文本...

    IKAnalyzer中文分词器

    ### IKAnalyzer中文分词器V3.1.6:深入解析与使用...IKAnalyzer作为一个成熟的中文分词解决方案,不仅适用于Lucene,也广泛应用于Solr等搜索引擎中,通过其强大的分词能力和灵活的配置选项,为开发者提供了有力的支持。

    ikanalyzer-solr5

    ikanalyzer-solr5 是一个专门为 Solr 5 及以上版本设计的中文分词器插件。在信息检索和自然语言处理领域,分词器是至关重要的工具,它负责将连续的文本切割成有意义的词语,以进行索引和查询操作。ikanalyzer 是一个...

    k-analyzer-solr solr分词器

    "ikanalyzer-solr5"看起来是一个针对Solr 5版本的IK Analyzer分词器。IK Analyzer是一款开源的、适用于Java环境的中文分词器,广泛应用于搜索引擎、日志分析等领域。它支持自定义词典和灵活的分词策略,能较好地处理...

    solr_5.0_tomcat7_IKAnalyzer中文分词安装及demo

    在这个"solr_5.0_tomcat7_IKAnalyzer中文分词安装及demo"的压缩包中,你将找到如何在Solr 5.0中集成IKAnalyzer并进行演示的详细步骤。 首先,我们需要了解Solr与IKAnalyzer的集成过程: 1. **下载和解压**:获取...

    solr6.0以上版本可以配置的IKAnalyzer分词器

    通过上述步骤,你可以在Solr6.6.0及更高版本中成功配置和使用IKAnalyzer分词器,提升你的中文搜索体验。记住,分词器的选择和配置对搜索引擎的性能至关重要,因此在实际应用中,可能需要根据具体需求进行调整和优化...

Global site tag (gtag.js) - Google Analytics