如何将法语文本 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。
我需要 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。