Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 搜索令牌不会返回任何结果_Java_Solr_Lucene_Tokenize - Fatal编程技术网

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

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\

我是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我想了解第二个查询不返回任何结果的原因

下面是我如何配置该字段的:

<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构建的吗?听起来是这样,所以创建它的版本可能也是一个问题