我基本上是在这里讨论同样的问题: Solr的通配符查询与空白 ,但是这问题不好回答。
我用了一个叫做字段筛选查询通配符“品牌”。
我在遇到麻烦的时候,品牌的名字在它的空格。 {!标签=品牌}:乐行* N例如,过滤品牌“列克星敦”当我说FQ =品牌工作正常。 多字品牌,如“Athentic模式”导致的问题,但是。 看来双引号必须包含周围的名称。
当有“S * S没有做任何事情,即品牌:” Athentic模式*”或品牌:‘Lexingt *’,不会匹配任何没有双引号的,它的工作说品牌:认证介绍*不带引号,没有空间,将匹配正品模式。但是一旦空白包含在品牌名称,似乎匹配时,只考虑串到第一空间。
品牌字段类型
<fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
这是不是空白标记化,我的理解。 它会填充一个空白标记化领域的copyField,虽然。
有什么我可以做,以从标记化而没有使用双引号过滤查询停止Solr的?
就像罗布在他回答说,我已经张贴的答案我自己对他联系的问题。
所有你需要做的就是逃避查询的空间(如, customer_name:Pop *Tart
- > customer_name:Pop\ *Tart
)。 从我的经验,这种方法可行无论你在哪里放置通配符,这是怎样的Solr宣称备份的东西,如:
customer_name:Pop\ *Tart
被解析为:
customer_name:Pop *Tart
尝试从字符串类型更改为类似的文字。 字符串类型没有标记化,所以当有一个字符串领域的空白,它会尝试匹配您的查询,包括在该领域中的空白。
在默认模式文件,你可以看到正上方的字符串字段类型这一行
<!-- The StrField type is not analyzed, but indexed/stored verbatim. -->
使用文本类型应该解决您的问题,像text_general或类似的一个。
我添加了一个可能的解决方案回到原来的问题与空白Solr的通配符查询
注意尾随通配符这仅适用。 我知道这个问题的例子使用字符串中通配符,但它有助于回答点问题的具体情况。
基本上,这相当于使用FieldQParserPlugin查询分析器。 检查我的更多细节原来的问题后,所以我不为重复自己得到蔑视。