【问题标题】:Do logical operators (+, || etc) work with multiple documents (blobs) in Azure Search?逻辑运算符(+、|| 等)是否适用于 Azure 搜索中的多个文档(blob)?
【发布时间】:2019-08-21 10:28:54
【问题描述】:

我已经为数据库以及带有 Blob 的存储帐户中的容器配置了 Azure 搜索。 单个词 Search 在数据源中运行良好。此外,使用逻辑运算符的多词搜索在单个 Blob 的上下文中也能正常工作。 但是,它并没有给我想要的结果,因为我的搜索需要在 blob 集合的上下文中工作。

我有一个附加了多个文档的数据库对象(作为 blob 存储在容器下的不同文件夹中)。我的搜索(使用多个单词和逻辑运算符)需要向用户显示业务对象,以防它遇到对附加到业务对象的多个文档有效的条件。

所以,我有一个业务对象“A”,附加了文档“B”、“C”和“D”,存储在容器下的文件夹“E”中(已在我的 Azure 搜索中创建了索引器) .文档 B 有单词“king”,C 中有单词“queen”。在这种情况下,如果我搜索“国王 + 王后”,那么它不会给我任何结果。我想在我的搜索结果中得到“A”,因为它总体上满足“国王+王后”的条件。

【问题讨论】:

    标签: azure azure-cognitive-search


    【解决方案1】:

    Azure 搜索查询中的布尔运算符适用于单个文档级别。在您的示例中,查询“king + queen”将搜索同时包含“king”和“queen”的文档 – read more here about simple query syntax

    如果您有其他识别业务对象“A”的标准(如 nameobject-id 字段),您可以构造一个查询来捕获它,并使用逻辑“或”列出关键字,例如– 使用 queryType=simple 时为“A + (king | queen)”(这是默认设置)。您还可以考虑将 queryType=full 模式用于更具表现力的查询语言,您还可以在其中表达单个字段的预期值(例如“name:A”)。如需进一步阅读,请参阅Lucene query syntax in Azure Search

    【讨论】:

    • 谢谢。不幸的是,就我而言,搜索将由我无法控制的用户执行。我的猜测是,用户会采用更直观的搜索方式,在我看来,关键字之间只有“+”。有没有办法对一组文档进行分组,以便索引器将它们假定为一个文档?
    • 不幸的是,索引器无法将多个源文档合并到一个文档中。在您的原始示例中,由于不希望查询引用业务对象\组,如果属于不同组的多个文档包含相同的关键字,预期的结果是什么?例如,文档“B”包含“king”,文档“C”包含“queen”,两者在逻辑上都属于业务对象“A”(如您的示例中),但如果文档“Z”在逻辑上属于业务对象“ X”,也包含“王”?
    • 在这种情况下,只应显示业务对象“A”,因为文档“Z”不满足“国王 + 王后”标准。仅当“Z”也有“queen”或“X”有另一个文档“W”中包含单词“queen”时,才应显示业务对象“X”。
    • 我明白了。但是如果没有任何属性来连接属于同一业务对象的文档,通常是不可能的。此外,在您的示例中,业务对象不是文档本身,而是逻辑组,因此您似乎必须在索引时将它们建模为文档,或者在客户原始查询和 Azure 搜索之间引入一层将业务对象的相关 ID 添加到查询中,并可能还处理结果(合并?)以生成所需的业务逻辑。
    • 嗯,我想要实现的目标在我看来是一个非常标准的业务用例,Microsoft 需要想出一种更简单的方法来管理它。我当然有一个文档的逻辑分组,其中业务对象的 ID 作为元数据标记在文档上,并将它们分别存储在 ID 命名的文件夹中。
    猜你喜欢
    • 1970-01-01
    • 2012-01-10
    • 2015-10-02
    • 2015-04-16
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    相关资源
    最近更新 更多