【问题标题】:Azure Search - Field Value EndingAzure 搜索 - 字段值结尾
【发布时间】:2016-07-07 00:47:18
【问题描述】:

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

"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"

我正在尝试创建一个返回以“ted”结尾的结果的正则表达式。例如,我想

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

被退回,但不是:

"The trusted leader"

我尝试了以下正则表达式。但是,它不起作用:

"搜索":"姓名:/.*(ted)$/"

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

【问题讨论】:

    标签: lucene azure-cognitive-search


    【解决方案1】:

    感谢您与我们联系。

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

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

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

    如果这有帮助,请告诉我

    【讨论】:

    • 啊...感谢您的解释。这有帮助。
    【解决方案2】:

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

    我实际上写了一篇关于这个主题的博文。它显示了如何做Azure Search queries with StartsWith, EndsWith, and Contains

    我希望这会有所帮助。

    【讨论】:

    • 很棒的博文!这有很大帮助。非常感谢。
    • FWIW 这个博客现在似乎关闭了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-24
    • 2021-01-27
    • 2021-10-13
    • 2020-07-21
    • 2011-03-28
    • 2019-02-05
    • 2022-11-03
    相关资源
    最近更新 更多