solr忽略多字段搜索中的值

时间:2018-06-04 19:34:14

标签: solr tokenize solrj

我刚刚开始使用Solr,我不确定我错过了什么。我有2个街道街道地址和城市。 streetAddresses是文本字段,cities是字符串字段。在我开始查看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的解析字符串只有字符串的第一部分,其余部分被忽略。例如,如果我搜索111 Main St的streetAddresses和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,但我没有使用其中任何一个。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

streetAddresses:111 Main st OR cities:Boston

表示&#34;在街道地址中搜索111,在默认搜索字段中搜索Main(默认情况下可能不再设置..),默认为st搜索字段以及Boston中的cities

如果您要在111 Main st中搜索streetAddresses,则必须引用该值(并使用词组搜索):

streetAddresses:"111 Main st"

..或每次指定字段:

streetAddresses:111 streetAddresses:Main streetAddresses:st