我正在尝试对我的 solr 系统运行以下查询:
((((subtype:place) AND name:fis*) AND addressPostal:98007) AND addressLine1:14320\ 21*)
此查询旨在搜索名称前 3 个字符fis
和地址前 8 个字符的企业14320 21
。
这不返回任何匹配项。但是,如果我更改fis*
为Fis*
它返回正确的匹配。经过进一步调查,字符串类型似乎区分大小写。
然后,我何时尝试定义我的字段,以便它们不区分大小写,允许通配符搜索(或至少从搜索开始),并且不会中断空格。不幸的是我失败了。
到目前为止,我得到的最接近的是:
<fieldType name="lowerCaseString" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
有了这个,我可以做到((((subtype:place) AND name:fis*) AND addressPostal:98007) AND addressLine1:14320*)
并获得正确的匹配,但由于空格,我无法为地址搜索执行完整的 8 个字符(并且由于大多数地址在第一个空格之前只有几位数字,这是一个主要问题)。
addressLine1 搜索也需要不区分大小写,因为我需要st == ST == St
。
我怎样才能做到这一点?