Azure 搜索:如何确保所有性别和复数的组合都包含在我的结果中?

Azure Search: How do I ensure all combinations of gender and plurality are included in my results?

我面临一个法语网站的业务需求,该网站需要匹配 masculine/feminine/singular 和单词的复数版本。描述这一点的最简单方法是在这个问题中显示需求本身。

请求 1 - 搜索 chien (masculine/singular)

搜索结果中应包含以下字词:

当我研究这个需求时,我使用 Analyze API with "fr.microsoft" 分析器来快速测试各种场景。

请求 #1

{ "analyzer": "fr.microsoft", "text": "chien" }

回复#1

请求#2

{ "analyzer": "fr.microsoft", "text": "chiens" }

回复 #2

请求 #3

{ "analyzer": "fr.microsoft", "text": "chienne" }

回复#3

请求 #4

{ "analyzer": "fr.microsoft", "text": "chiennes" }

回复#4

请求 2 - 搜索讲师 (masculine/singular)

搜索结果中应包含以下字词:

我再次使用 Analyze API with "fr.microsoft" 分析器来快速测试各种场景。

请求 #1

{ "analyzer": "fr.microsoft", "text": "lecteur" }

回复#1

请求#2

{ "analyzer": "fr.microsoft", "text": "chiens" }

回复 #2

请求 #3

{ "analyzer": "fr.microsoft", "text": "lectrice" }

回复#3

请求 #4

{ "analyzer": "fr.microsoft", "text": "lectrices" }

回复#4

我的感受和问题


要求示例 3 - 搜索 MELEE

搜索结果中应包含以下字词:

请求 #1

{ "analyzer": "fr.microsoft", "text": "MELEE" }

回复#1

请求#2

{ "analyzer": "fr.microsoft", "text": "MÊLEE" }

回复 #2

请求 #3

{ "analyzer": "fr.microsoft", "text": "Mêlée" }

回复#3

请求 #3

{ "analyzer": "fr.microsoft", "text": "mêlant" }

回复#3

在此示例中,我可以继续分析 API 调用,但在这里我可以与现有网站(我们需要重现其功能)和新网站进行比较。现有网站允许我搜索 "melee",它会找到带有 "mêlant" 的文档。 Screenshot of existing website

但是根据 Analyze API 的结果,我可以看到搜索 "melee" 不会找到 "mêlant" 因为 "melee" 只会被标记化为 "melee" 而 "mêlant" 仅被标记为 meler、mêler、melant 和 mêlant。这里没有匹配项。

我的感受和问题


请指教

我想我已经回答了你另一个 post 中的第一个和第二个要求:,如果我遗漏了什么,请告诉我。

关于第三个要求,我怀疑发生的情况是您所指的网站使用了激进的词干提取策略。这意味着 meleemêlant 这两个词都归结为同一个词根。在词干提取之上,他们可能使用模糊搜索或其他查询扩展方法,如同义词扩展。问题是您是否希望带有 mêlant 的文档与单词 melee 匹配,前提是它们表示不同的意思。

A​​zure 搜索中可以进行模糊搜索和同义词扩展。您还可以尝试使用 custom analyzers 来控制词干提取的方式。我们使用的 Lucene 组件与 SOLR 中使用的组件相同,因此在大多数情况下您应该能够复制相同的分析器配置。

希望对您有所帮助。