Java 搜索令牌不会返回任何结果
我是SOLR的新手,这是我在这个列表中的第一篇帖子。 我已经研究这个问题好几天了。我尝试了在谷歌上找到的所有东西,但看起来我遗漏了什么 我的问题是: 我有一个名为:DBASE_LOCAT_NM_TEXT的字段,它包含诸如:CRD_PROD之类的值。目标是能够通过放置确切的字符串“CRD_PROD”或其一部分(由“u”标记),如“CRD”或“PROD”来搜索此字段 目前: 此查询返回结果:q=DBASE\u LOCAT\u NM\u TEXT:CRD\u PROD,但此查询不返回:q=DBASE\u LOCAT\u NM\u TEXT:CRD我想了解第二个查询不返回任何结果的原因 下面是我如何配置该字段的:Java 搜索令牌不会返回任何结果,java,solr,lucene,tokenize,Java,Solr,Lucene,Tokenize,我是SOLR的新手,这是我在这个列表中的第一篇帖子。 我已经研究这个问题好几天了。我尝试了在谷歌上找到的所有东西,但看起来我遗漏了什么 我的问题是: 我有一个名为:DBASE_LOCAT_NM_TEXT的字段,它包含诸如:CRD_PROD之类的值。目标是能够通过放置确切的字符串“CRD_PROD”或其一部分(由“u”标记),如“CRD”或“PROD”来搜索此字段 目前: 此查询返回结果:q=DBASE\u LOCAT\u NM\u TEXT:CRD\u PROD,但此查询不返回:q=DBASE\
<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_产品
WDF CRD_产品
CRD
戳
CRDPROD
SF CRD_产品
CRD
戳
CRDPROD
LCF crd_产品
crd
戳
crdprod
SKMF crd_产品
crd
戳
crdprod
RDTF crd_产品
crd
戳
crdprod
我不确定它是否相关,但这个索引是使用Lucene接口的Java程序创建的。它使用StandardAnalyzer进行写入,并将字段配置为标记化、索引和存储。这会影响SOLR配置吗
你能帮我理解我遗漏了什么以及如何调试它吗
谢谢,
Yetkin那么,这个索引不是由Solr索引的吗?它是在一个完全独立的应用程序中创建的 在这种情况下,您的“索引”分析器与此无关,因为它从未被使用过。通常,您应该在索引和查询时使用相同的分析器设置。当然也有例外,但除非你有充分的理由不这样做,否则请坚持这样做。如果使用
StandardAnalyzer
对字段进行索引,只需:
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer class="org.apache.lucene.analysis.standard.StandardAnalyzer"/>
</fieldtype>
然而,我不太清楚你为什么没有得到匹配。该索引是使用旧版本的lucene构建的吗?听起来是这样,所以创建它的版本可能也是一个问题