搜索令牌不会返回任何结果

时间:2014-05-01 14:24:08

标签: java solr lucene tokenize

我是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     PROD     CRDPROD

SF CRD_PROD     CRD     PROD     CRDPROD

LCF crd_prod     CRD     刺     crdprod

SKMF crd_prod     CRD     刺     crdprod

RDTF crd_prod     CRD     刺     crdprod

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

你能帮我理解我错过了什么以及如何调试吗?

谢谢, Yetkin

1 个答案:

答案 0 :(得分:0)

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

在这种情况下,您的&#34;索引&#34;分析仪与它无关,因为它从未被使用过。通常,您应该在索引和查询时使用相同的分析器设置。有一些例外情况,但除非你有良好的原因,否则坚持这一点。如果使用StandardAnalyzer对字段编制索引,则只需:

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

但是,不确定为什么你没有得到比赛。索引是用旧版本的lucene构建的吗?它听起来就是这样,所以它创建的版本也可能是一个问题。