【发布时间】:2018-06-04 19:34:14
【问题描述】:
我刚刚开始使用 Solr,但我不确定我缺少什么。我有 2 个字段 streetAddresses 和 city。 streetAddresses 是文本字段,城市是字符串字段。这在我开始查看 Solr 之前就已经配置好了。字段的 schema.xml 看起来像
<types>
<fieldType class="org.apache.solr.schema.TextField" name="TextField">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<fieldType class="org.apache.solr.schema.StrField" name="StrField"/>
</types>
<fields>
<field indexed="true" multiValued="true" name="streetAddresses" stored="true" type="TextField"/>
<field docValues="true" indexed="true" multiValued="true" name="cities" stored="true" type="StrField"/>
</fields>
问题是当我查询多个字段时,streetAddresses 的解析字符串只有字符串的第一部分,其余部分被忽略。例如,如果我在 streetAddresses 中搜索 111 Main St 并在城市中搜索 Boston,则查询看起来像
q=streetAddresses%3A111+Main+st+OR+cities%3ABoston&wt=json&indent=true&debugQuery=true&defType=edismax&qf=streetAddresses%2Ccities
调试看起来像
"rawquerystring": "streetAddresses:111 Main st OR cities:Boston",
"querystring": "streetAddresses:111 Main st OR cities:Boston",
"parsedquery": "(+(streetAddresses:111 cities:Boston))/no_coord",
"parsedquery_toString": "+(streetAddresses:111 cities:Boston)",
"explain": {},
"QParser": "ExtendedDismaxQParser",
"altquerystring": null,
"boost_queries": null
我得到了基于 111 的 streetAddresses 的结果,但字符串的其余部分 (Main st) 被忽略。我试图搜索这个问题,有些人提到了停用词或 wordlimit,但我没有使用任何这些。有什么想法吗?
【问题讨论】: