【发布时间】: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 配置吗?
能否请您帮助我了解我缺少什么以及如何调试它?
谢谢, 耶特金
【问题讨论】: