如果查询字符串以短单词开头,则Solr找不到记录

如果查询字符串以短单词开头,则Solr找不到记录,solr,lucene,Solr,Lucene,我使用的是Solr4,我有一个长度过滤器工厂 <filter class="solr.LengthFilterFactory" min="3" max="99"/> 下面是我的模式。我将向您显示我正在搜索的字段的字段定义。有人知道这里出了什么问题吗 <fieldType name="text_general_example" class="solr.TextField" positionIncrementGap="100"> <analyzer type="i

我使用的是Solr4,我有一个长度过滤器工厂

<filter class="solr.LengthFilterFactory" min="3" max="99"/>
下面是我的模式。我将向您显示我正在搜索的字段的字段定义。有人知道这里出了什么问题吗

<fieldType name="text_general_example" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-FoldToASCII.txt"/>          
    <charFilter class="solr.HTMLStripCharFilterFactory"/>
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="(^|\s)([^\-\_&amp;\s]+([\-\_&amp;]+[^\-\_&amp;\s]*)+)(?=(\s|$))" replacement="$1MжџљМ$2 $2" />
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="\bMжџљМ([^\s]*?)\b[\-_&amp;]+" replacement="MжџљМ$1" />
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="\bMжџљМ([^\s]*?)\b[\-_&amp;]+" replacement="MжџљМ$1" />
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="\bMжџљМ([^\s]*?)\b[\-_&amp;]+" replacement="MжџљМ$1" />
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="MжџљМ" replacement="" />
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="(\w)&amp;(\w)" replacement="$1and$2" />
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LengthFilterFactory" min="3" max="99"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="\b[\-_]+\b" replacement="" />
    <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-FoldToASCII.txt"/>
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="(\w)&amp;(\w)" replacement="$1and$2" />
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LengthFilterFactory" min="3" max="99"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.RemoveDuplicatesTokenFilterFactory" />
  </analyzer>
</fieldType>

查询的问题是,如果您正在搜索

field:I have a problem
然后,在解析之后,您将实际获得以下查询
字段:I defaultField:have defaultField:a…
,其中默认字段通常在
solrconfig.xml
中指定。您也可以使用参数
debugQuery


一些代币将被删除,这就是您没有得到正确结果的原因。要进行正确的查询,需要用双引号括住查询

这正是您正在使用的查询吗?您在查询中没有使用任何字段?@Mystion我已在帖子中添加了我的查询示例。谢谢,但我不能用双引号括起mu查询,因为我不想使用短语搜索。solrconfig.xml中的默认字段定义在哪里?我找不到它。我找到了它,更改默认字段似乎可以解决我的问题。
field:I have a problem