Liferay 门户 7.3.7 不区分大小写,使用 ElasticSearch 时没有变音符号

Liferay portal 7.3.7 case insensitive, diacritics free with ElasticSearch

我在 liferay portal 7.3.7 上进退两难,使用自定义 ddm 字段在 JournalArticles 中通过 elasticsearch 进行不区分大小写和无变音符号的搜索。 Liferay 在 Configuration->Search 中生成字段映射,如下所示:

    ...
    },
    "localized_name_sk_SK_sortable" : {
      "store" : true,
      "type" : "keyword"
    },
    ...

我希望这些 *_sortable 字段可用于不区分大小写和无 dia 搜索,因此我尝试在 System Settings->Search->Elasticsearch 中将分析器和规范器添加到 liferay 搜索高级配置中7 像这样:

{  
  "analysis":{  
    "analyzer":{
        "ascii_analyzer":{  
            "tokenizer": "standard",
            "filter":["asciifolding","lowercase"]
        }
    },
    "normalizer": {
        "ascii_normalizer": {
            "type": "custom",
            "char_filter": [],
            "filter": ["lowercase", "asciifolding"]
        }
    }
  }
}

之后,我覆盖了 template_string_sortable 的映射:

     {
      "template_string_sortable" : {
        "mapping" : {
          "analyzer": "ascii_analyzer",
          "normalizer": "ascii_normalizer",
          "store" : true,
          "type" : "keyword"
        },
        "match_mapping_type" : "string",
        "match" : "*_sortable"
      }
    }

重建索引后,我的可排序字段如下所示:

    ...
    },
    "localized_name_sk_SK_sortable" : {
      "normalizer" : "ascii_normalizer",
      "store" : true,
      "type" : "keyword"
    },
    ...

接下来,我尝试为我的 ddm 结构创建新内容,但我所有的可排序字段看起来都一样,如下所示:

 "localized_title_sk_SK": "test diakrity časť 1 ľščťžýáíéôň title",
 "localized_title_sk_SK_sortable": "test diakrity časť 1 ľščťžýáíéôň title",

但是我需要那个没有国家字符的可排序字段,所以我可以通过 localized_title_sk_SK_sortable 中的 wildcardQuery 等找到“cast 1”等等... THX寻求任何建议(也许我只是对整个问题有错误的看法?而且我真的是 ES 的新手)

首先最好应用 original_ascii_folding,然后再应用 lowercase 过滤器,但请记住此过滤器用于搜索,您的 _source 数据不会更改因为你在现场应用了分析仪。

如果您需要在摄取数据之前对其进行操作,您可以使用 Elasticsearch 中的摄取管道功能以获取更多信息,请查看 here