【问题标题】:Searching for tokens does not return any results搜索令牌不返回任何结果
【发布时间】:2014-05-01 14:24:07
【问题描述】:

我是 SOLR 的新手,这是我在此列表中的第一篇文章。 我已经在这个问题上工作了几天。我尝试了我在谷歌中找到的所有内容,但看起来我错过了一些东西。

这是我的问题: 我有一个名为:DBASE_LOCAT_NM_TEXT 的字段 它包含以下值:CRD_PROD 目标是能够通过输入确切的字符串“CRD_PROD”或其中的一部分(由“_”标记)来搜索该字段,如“CRD”或“PROD” "

目前: 此查询返回结果: q=DBASE_LOCAT_NM_TEXT:CRD_PROD 但这没有: q=DBASE_LOCAT_NM_TEXT:CRD 我想了解为什么第二个查询没有返回任何结果

这是我配置字段的方式:

<field name="DBASE_LOCAT_NM_TEXT" type="text_general" indexed="true" stored="true"    required="false" multiValued="false"/>

这是我配置字段类型的方式:

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
  <filter class="solr.WordDelimiterFilterFactory" preserveOriginal="1" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.StopFilterFactory"  ignoreCase="true" words="stopwords.txt"/>
     <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <filter class="solr.WordDelimiterFilterFactory" preserveOriginal="1" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>

    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>

  </analyzer>

我也在使用 SOLR 管理控制台中的分析面板。它显示了这一点: WT CRD_PROD

WDF CRD_PROD CRD 产品 CRDPROD

SF CRD_PROD CRD 产品 CRDPROD

LCF crd_prod crd 产品 产品目录

SKMF crd_prod crd 产品 产品目录

RDTF crd_prod crd 产品 产品目录

我不确定它是否相关,但该索引是使用使用 Lucene 接口的 Java 程序创建的。它使用 StandardAnalyzer 进行写入,并将字段配置为标记化、索引和存储。这会影响 SOLR 配置吗?

能否请您帮助我了解我缺少什么以及如何调试它?

谢谢, 耶特金

【问题讨论】:

    标签: java solr lucene tokenize


    【解决方案1】:

    那么,这个索引没有被 Solr 索引吗?它是在完全独立的应用程序中创建的?

    在这种情况下,您的“索引”分析器与它无关,因为它从未被使用过。通常,您应该在索引和查询时使用相同的分析器设置。也有例外,但请坚持这一点,除非您有好的理由不这样做。如果该字段是使用StandardAnalyzer 索引的,只需:

    <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
      <analyzer class="org.apache.lucene.analysis.standard.StandardAnalyzer"/> 
    </fieldtype>
    

    但是,不太确定您没有得到匹配项的确切原因。索引是用旧版本的 lucene 构建的吗?听起来是这样,所以它是用什么版本创建的也可能是个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-02
      • 1970-01-01
      • 2016-01-12
      • 1970-01-01
      • 1970-01-01
      • 2013-02-19
      • 2020-03-16
      • 1970-01-01
      相关资源
      最近更新 更多