在solr查询连字符被replace为问号

我在SolrCloud中有两个不同的集合 – test1和test3。 当我在test1中search"BUG-123" ,在debugging部分看到下面的parsing查询。

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

而当我在test3search"BUG-123" ,我在debugging部分看到下面的parsing查询。

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

请注意,在test3情况下, "-"字符被replace为"?" 。 由于这个,我没有得到任何文件的search结果。

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

我可以解决这个问题。 在test3集合的托pipe模式文件中,我在查询部分中为text_en字段types包含了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云解决的问题。

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