
[英]Solr configuration to filter all docs with titles that exactly match the search query itself
[英]Solr query emulates exactly match
我使用solr对品牌进行简短查询。 我想要平等的比赛,但明白在Lucene中这是不可能的。 我尝试了一些仅用于测试的硬编码查询
myBrand:2\+2 and myBrand:\+
我得到2:2,看来条件不起作用,所以我期望如何?
另外,我尝试
myBrand:2\+2 with a fq of myBrand:\+
现在,完全没有结果。
我使用Solr 5,并在Solr Web界面中进行所有测试。 当我不需要太多的知识并且想要强大的平等匹配时,是否有某种方法可以使某些短品牌,昵称等获得最佳匹配? 还是在执行Solr查询后必须在自己的代码中过滤结果?
更新
架构中的更改解决了我的问题。 现在它正像魅力一样适用于2+2
查询。
<fieldType name="text_general" class="solr.TextField" multiValued="true" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.PatternTokenizerFactory" pattern="\s*"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.PatternTokenizerFactory" pattern="\s*"/>
</analyzer>
</fieldType>
平等比赛并非没有可能。 您只需要使用保留确切值的字段类型,例如StrField或带有KeywordTokenizer的TextField(如果要使其不区分大小写)。
匹配将是field:"Exact value"
或任何常规查询语法。 Solr / Lucene不会进行“精确”匹配的原因是示例中的常规TextField定义将文本分成了单独的标记。
对于过滤器,您通常需要精确的值(对于facet和fq
都可以,因此您可以精确地过滤结果),所以这不是Lucene的限制,而是由您使用的字段类型引入的。
解决方案可能是在许多字段中具有相同的内容(一个用于搜索常规文本查询),另一个用于过滤和构面。 使用copyField
可以将同一值从同一源字段获取到多个字段中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.