在 solr 查询中连字符被替换为问号

在 solr 查询中连字符被替换为问号

我在 SolrCloud 中有两个不同的集合 - test1 和 test3。当我在 test1 中搜索时,"BUG-123"我在调试部分看到以下已解析的查询。

"debug": {
    "rawquerystring": "\"BUG-123\"",
    "querystring": "\"BUG-123\"",
    "parsedquery": "PhraseQuery(_text_:\"bug 123\")",
    "parsedquery_toString": "_text_:\"bug 123\"",
...}

"BUG-123"而当我在中搜索时,test3我在调试部分看到以下已解析的查询。

"debug": {
    "rawquerystring": "\"BUG-123\"",
    "querystring": "\"BUG-123\"",
    "parsedquery": "PhraseQuery(_text_:\"bug ? 123\")",
    "parsedquery_toString": "_text_:\"bug ? 123\"",
...}

请注意,如果出现test3"-"字符将被替换为"?"。因此,我在搜索结果中找不到任何文档。

我需要帮助来了解为什么-会被取代?以及如何避免它。

答案1

我可以解决这个问题。在 test3 集合的托管架构文件中,我在 text_en 字段类型的查询部分中包含了 AutoPhrasingTokenFilterFactory,如下所示

    <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="lang/stopwords_en.txt" ignoreCase="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
<filter class="solr.StopFilterFactory" words="lang/stopwords_en.txt" ignoreCase="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="com.lucidworks.analysis.AutoPhrasingTokenFilterFactory" includeTokens="true" phrases="autophrases.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>

删除以下行并重新启动 solr cloud 即可解决问题。

<filter class="com.lucidworks.analysis.AutoPhrasingTokenFilterFactory" includeTokens="true" phrases="autophrases.txt"/>

相关内容