繁体   English   中英

Solr查询模拟完全匹配

[英]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查询后必须在自己的代码中过滤结果?

按字段查询

用过滤器查询

用filter2查询

更新

架构中的更改解决了我的问题。 现在它正像魅力一样适用于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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM