【问题标题】:In Azure Search, how do you run a "contains" search with multiple terms in searchtext?在 Azure 搜索中,如何在 searchtext 中运行包含多个术语的“包含”搜索?
【发布时间】:2018-11-11 21:50:23
【问题描述】:

我在 CosmosDB 之上以完整查询模式使用 Azure 搜索,并且我想对包含字符串“azy do”的字段的任何文档运行查询。这应该匹配,例如,包含“lazy dog”的文档。

阅读 Azure 搜索文档,由于它使用基于术语的索引,这似乎是不可能的。

被拒绝的解决方案

0 匹配,因为它正在寻找整个单词:“azy do”

不起作用,因为正则表达式不允许跨越多个术语:/.azy do./

这个“有效”,在一定程度上匹配“lazy dog”,但这不尊重查询的顺序,也会匹配“dog lazy”,例如 /.azy。 em>/ AND /.做。/

有没有办法在 Azure 搜索中正确执行此操作?

【问题讨论】:

  • 有人可以帮我为上述用例创建一个自定义分析器吗?
  • 以后请用 [azure-search] 标记 Azure 搜索问题。否则 Azure 搜索团队不会收到您的问题的通知。

标签: azure azure-sql-database azure-cognitive-search


【解决方案1】:

如果您无法通过 Lucene 查询语法中的正则表达式来实现这一点,那么是不可能的。您可能想投票支持包含here

【讨论】:

    【解决方案2】:

    应该是 /.lazy|dog./ 因此,根据空格拆分术语并添加代表 OR 的竖线 (|) 分隔符。

    【讨论】:

      【解决方案3】:

      简而言之,Azure 搜索并非旨在支持此方案。您最好使用 Cosmos DB 中的 CONTAINS 函数或其等效函数,具体取决于您使用的查询语言。

      Azure 搜索旨在查找出现在非结构化内容(文档)中的术语或短语并返回最相关的文档。提取和索引这些可搜索词的过程是可定制的,并在此处描述:How full text search works in Azure Search

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-13
        • 2011-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-08
        相关资源
        最近更新 更多