如何将法语文本 FEMMES.COM 索引为 FEMMES 的语言变体

How do I get french text FEMMES.COM to index as language variants of FEMMES

我需要 FEMMES.COM 才能标记为基本词 FEMME 的单数 + 复数形式。

自定义分析器配置

"analyzers": [ { "@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer", "name": "text_language_search_custom_analyzer", "tokenizer": "text_language_search_custom_analyzer_ms_tokenizer", "tokenFilters": ["lowercase", "asciifolding" ], "charFilters": [ "html_strip" ] } ], "tokenizers": [ { " @odata.type": "#Microsoft.Azure.Search.MicrosoftLanguageStemmingTokenizer", "name": "text_language_search_custom_analyzer_ms_tokenizer", "maxTokenLength": 300, "isSearchTokenizer": false, "language" : "english" } ], "tokenFilters": [], "charFilters": []}

分析 API 对 FEMMES 的调用

{ "analyzer": "text_language_search_custom_analyzer", "text": "FEMMES" }

分析 API 女性的反应

{ "@odata.context": "https://one-adscope-search-eu-stage.search.windows.net/$元数据#Microsoft.Azure.Search.V2016_09_01.AnalyzeResult", "tokens": [ { "token" : "femme", "startOffset": 0, "endOffset": 6, "position": 0 }, { "token": "femmes", "startOffset" : 0, "endOffset": 6, "position": 0 } ] }

分析 API 对 FEMMES.COM

的响应

{ "@odata.context": "https://one-adscope-search-eu-stage.search.windows.net/$元数据#Microsoft.Azure.Search.V2016_09_01.AnalyzeResult", "tokens": [ { "token" : "femmes", "startOffset": 0, "endOffset": 6, "position": 0 }, { "token": "com", "startOffset" : 7, "endOffset": 10, "position": 1 } ] }

分析 API 对 FEMMES COM 的响应

{ "@odata.context": "https://one-adscope-search-eu-stage.search.windows.net/$元数据#Microsoft.Azure.Search.V2016_09_01.AnalyzeResult", "tokens": [ { "token" : "femme", "startOffset": 0, "endOffset": 6, "position": 0 }, { "token": "femmes", "startOffset" : 0, "endOffset": 6, "position": 0 }, { "token": "com", "startOffset": 7, "endOffset": 10, "position": 1 } ]}

我想我是经过一些实验后自己想出来的。我发现 MappingCharFilter 可用于替换 . ,在索引器进行标记化之前。这允许 lemmatization/stemming 在相关条款上按预期工作。我需要对我们的其他用例进行更彻底的集成测试,但我认为这可以解决任何面临相同类型问题的人的问题。

我之前的回答不正确。 Azure 搜索实现实际上在标记筛选器之前应用了语言标记生成器。这基本上使 WordDelimiterToken 过滤器在我的用例中无用。

我最终要做的是在上传到 Azure 进行索引之前预处理数据。在我的 C# 代码中,我添加了一些正则表达式逻辑,在我将它发送到 Azure 之前,将像 FEMMES2017 这样的文本分解成 FEMMES 2017。这样,当文本到达 Azure 时,索引器将自己看到 FEMMES,并使用语言分词器正确分词为 FEMME 和 FEMMES。