【问题标题】:Can I "Exact Search" for targeted field(s) and Search across other fields as well?我可以“精确搜索”目标字段并搜索其他字段吗?
【发布时间】:2017-04-27 01:28:15
【问题描述】:

“精确搜索”字段使用自己的自定义分析器,而搜索字段使用特定语言的自定义分析器(例如,基于 MicrosoftStemmingTokenizerLanguage.French 构建)。

我似乎无法对“精确搜索”字段使用 $filter,因为 $filter 会考虑整个字段,并且不使用该字段的自定义分析器。

Azure 搜索文档指出了有关字段范围查询的这一点。 "你可以指定一个fieldname:searchterm构造来定义一个fielded查询操作,其中field是单个词,搜索词也是单个词"

对于如何在 Azure 中执行此操作没有明确的方法。我们知道我们可以在 Azure Search Rest API 调用中使用 searchFields 参数来定位特定字段,但是我们如何在所有字段中搜索 1 个术语,同时专门在某些字段中搜索特定术语,基本上是在它们之间进行“与”?

【问题讨论】:

    标签: azure search azure-cognitive-search


    【解决方案1】:

    这可以使用Lucene query syntax

    这样构建您的查询,其中“chair”是要在所有字段中搜索的术语,field1field2 是您要在其中搜索特定术语的字段:

    chair AND field1:something AND field2:else
    

    就如何在 REST API 中使用它而言,只需将其嵌入到您的 search 参数中即可。如果您使用 GET,它看起来像这样(想象一下它是 URL 编码的):

    search=chair AND field1:something AND field2:else
    

    如果您使用的是 POST,它会进入请求正文,如下所示:

    {
        "search": "chair AND field1:something AND field2:else",
        ... (other parameters)
    }
    

    【讨论】:

    • 谢谢布鲁斯。我们的团队将在这个星期四或星期五尝试。我会尽快回复你。
    • 我从来没有回复过这个。这正是我们所需要的。我们实际上有几个可搜索字段的副本,每个副本都有不同的自定义分析器,我们最终会解析用户输入并按照您建议的方式智能地定位索引中的正确字段。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多