【问题标题】:Exact match with special characters in solr与 solr 中的特殊字符完全匹配
【发布时间】:2014-07-24 09:34:07
【问题描述】:

我使用的是 solr 4.6.1,我在搜索带有特殊字符的字符串时遇到了一个问题,让我告诉你一个例子

如果我搜索字符串"choose:",则首先出现具有字符串<choose> 的结果,然后出现与<choose:> 完全匹配的结果。

请告诉我如何解决这个问题。

"params": {
      "lowercaseOperators": "true",
      "indent": "true",
      "q": "type:service AND tags:\"choose:\"",
      "qf": "tags^8",
      "_": "1406201797319",
      "stopwords": "true",
      "wt": "json",
      "defType": "edismax"
    }

【问题讨论】:

    标签: solr lucene


    【解决方案1】:

    如果您搜索 StrField,则只会计算完全匹配。然后,您可以使用qf=exact^8 text(如果使用dismaxedismax 作为查询解析器)对这些匹配进行更高的评分。在标准 Lucene 语法中,您可以搜索 exact:"choose:"^8 OR text:"choose:" 以获得更高的精确匹配分数。

    【讨论】:

    • @Anubhav 如前所述,您必须搜索 StrField 才能获得完全匹配(或者可能是带有 KeywordTokenizer 的文本字段)。 tags字段的定义是什么?
    • @Anubhav 默认情况下,会去除特殊字符,将文本分解为单词等。添加一个替代字段作为 StrField,使用 <copyField> 指令向两个字段添加内容,然后将精确匹配的字段比非精确匹配的字段提升更多。
    猜你喜欢
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 2016-04-17
    相关资源
    最近更新 更多