【问题标题】:Azure-search: How to get documents which exactly contain search termAzure-search:如何获取完全包含搜索词的文档
【发布时间】:2017-04-06 11:03:40
【问题描述】:

这个问题/答案涉及一个非常相似的主题,但我找不到我正在寻找的解决方案。 How to practially use a keywordanalyzer in azure-search?

开始情况:

我创建了一个具有多个索引的资源。这些索引之一包含一个 Collection(Edm.String) 字段。 从这个字段我只想获取完全包含搜索词的文档。例如,该字段包含以下文档:“Hovercraft zero”、“Hovercraft one”、“Hovercraft two”。

如果搜索词是“悬停”,则应返回所有三个文档。如果搜索词是“craft zer”,则只应返回文档“Hovercraft zero”。该文档不应该获得更高的分数,期望的行为是我只得到“气垫船零”文档作为结果。

更多信息:

不可能将搜索模式设置为全部(就像在顶部的问题中推荐的那样),因为我只想为这个特定字段而不是所有搜索查询设置此行为。也不可能让用户负责输入带引号的搜索词。

到目前为止我所尝试的:

  • 使用关键字分析器,就像问题中描述的那样 顶部:没有成功
  • 使用带有特定标记过滤器(ngram、 小写)和搜索分析器作为关键字分析器:没有成功
  • 使用 Charfilters 操作搜索词并手动设置 第一个和最后一个位置的引号(craft zer -> "craft zer")。 就像 Yahnoosh 在上面的问题中解释的那样,查询解析器 在应用分析器之前处理查询字符串。所以: 没有成功

这个问题有什么解决办法吗? 还是有其他方法可以实现所需的行为?

希望有人可以提供帮助。

提前致谢!

【问题讨论】:

    标签: azure azure-cognitive-search


    【解决方案1】:

    将您的示例与三个文档一起使用:“Hovercraft zero”、“Hovercraft one”、“Hovercraft two”

    1. 发出prefix query 以查找包含以“Hover”开头的术语的所有文档

      搜索=悬停*

    2. 要匹配术语“craft zer”,您需要在索引时使用关键字分析器(或带有小写标记过滤器的关键字标记器)以确保您的字符串集合的元素未标记化。然后在查询时您可以发出regex query(注意正则表达式查询比术语或前缀查询慢得多)

      search=/.craft zer./&queryType=full

    另外,请使用Analyze API 测试您的自定义分析仪配置。它将帮助您确保分析器生成您期望的术语。

    【讨论】:

    • 很好的答案,谢谢。但我认为我没有足够详细地解释我们的问题。我知道可以像这样操纵搜索查询,但遗憾的是这不是我们的选择。我们在主页上实现了一个搜索字段,用户可以在其中插入搜索词。然后我们通过 API 将这个术语传递给我们的资源以浏览我们的一个索引。因此,不可能操纵每一个搜索查询。我正在寻找一种解决方案,其中仅使用所需行为自动查询该索引的一个字段。其他字段应该以其他方式查询。
    【解决方案2】:

    感谢@Yahnoosh 的回答,我找到了适合我的解决方案。

    简短的例子: 我有一个包含三个字段(field1、field2、field3)的索引。从 field3 我想要一个文档完全包含搜索词的结果。从 field1 和 field2 我想得到一个“标准”的结果。

    解决方案: 我将搜索查询操作为 ->

    field1:{搜索词} ||字段2:{搜索词} || field3:"{searchterm}" &queryType=full

    使用此搜索查询 field1 和 field2 以“标准”方式进行查询,field3 以我正在搜索的行为进行查询。当然,还有更有效和更优雅的方法来解决这个问题,但它对我有用。

    如果有人有更好的解决方案,请告诉我;)

    【讨论】:

    • 很好,这是一种常见的模式。我们刚刚发布了一篇解释 Azure 搜索如何在后端工作的文章:docs.microsoft.com/en-us/azure/search/…。它旨在帮助 Azure 搜索用户了解如何自定义其搜索服务的行为。
    猜你喜欢
    • 2023-03-17
    • 2020-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 2015-04-16
    • 2022-01-24
    相关资源
    最近更新 更多