如果查询字符串以短单词开头,则Solr找不到记录
我使用的是Solr4,我有一个长度过滤器工厂如果查询字符串以短单词开头,则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
<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)([^\-\_&\s]+([\-\_&]+[^\-\_&\s]*)+)(?=(\s|$))" replacement="$1MжџљМ$2 $2" />
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="\bMжџљМ([^\s]*?)\b[\-_&]+" replacement="MжџљМ$1" />
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="\bMжџљМ([^\s]*?)\b[\-_&]+" replacement="MжџљМ$1" />
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="\bMжџљМ([^\s]*?)\b[\-_&]+" replacement="MжџљМ$1" />
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="MжџљМ" replacement="" />
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="(\w)&(\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)&(\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