Azure 搜索 - 字段值结尾

Azure Search - Field Value Ending

我正在试验 Azure 搜索。在我的搜索索引中,我有一个名为 "description" 的字段。此字段中的一些条目示例包括:

"The trusted leader"
"The champions event was bested"
"Another day, another dollar"
"The player will succeed if he's well rested"
"Go on to the next event"

我正在尝试创建一个 returns 以 "ted" 结尾的结果的正则表达式。例如,我想要

"The champions event was bested"
"The player will succeed if he's well rested"

要返回,但不返回:

"The trusted leader"

我尝试了以下正则表达式。但是,它没有用:

"search":"name:/.*(ted)$/"

我不知道为什么。我认为美元符号用于表示正则表达式中字符串的结尾。它似乎应该工作。是 Azure 搜索中的错误吗?

感谢您伸出援手。

在 Azure 搜索中,您文档的内容被分解为随后被编入索引的术语。当您发出搜索查询时,搜索引擎会尝试将查询字词与索引中的字词进行匹配。

例如,您提供的句子将被拆分成单独的单词。这个过程称为词法分析,我对其进行了描述 here and here。默认情况下,搜索引擎假定您的内容使用自然语言。标准的词法分析器会删除标点符号并在空格处拆分。因此,您构建的正则表达式会独立匹配每个单词,而不是整个句子。

您可以使用custom analyzers自定义词法分析的过程。例如,您可以使用 KeywordAnalyzer 告诉搜索引擎将整个文档视为一个词。

如果有帮助请告诉我

如@Yahnoosh 所述,您必须使用自定义分析器。对于仅匹配以某些字符结尾的术语,我认为您不需要 $。事实上,我相信你可以这样做:/.*ted/.

我居然写了一篇博客post这个话题。它显示了如何做 Azure Search queries with StartsWith, EndsWith, and Contains.

希望对您有所帮助。