【问题标题】:Suggestions by more than one term or Space in between in Azure Search (Suggester)Azure 搜索中多个术语或间隔的建议(建议者)
【发布时间】:2019-08-28 03:12:25
【问题描述】:

我需要在下拉列表中按名字、姓氏和电子邮件建议用户列表我已经创建了一个索引,在 azure 控制台中使用建议器标记字段,如下所示:

这仅适用于 FirstName 的查询,但不适用于 FirstName "space" LastName,当我运行此查询时,我只得到 0 个文档

例子:

姓名 John Doe

  • 约翰,我得到了所有约翰的建议
  • 约翰,我得到所有约翰的建议
  • John D,我收到 0 个文档
  • John Doe,我收到 1 份文件

这是我的代码:

term = Uri.EscapeDataString(term);
SuggestParameters sp = new SuggestParameters
{
    Top = 20,
    UseFuzzyMatching = true,
    SearchFields = new List<string> { "FirstName", "LastName","Email" },
    Select = new List<string> { "Id","FirstName", "LastName", "Email" },
    OrderBy = new List<string> { "FirstName", "LastName", "Email" },
};
var docs = await _indexClient.Documents.SuggestAsync(term, "sg", sp);
  • 我可以将查询拆分为 FirstName 和 第二个是姓氏?
  • 我是否需要以不同的方式对术语进行转义?
  • 我可以使用任何通配符来实现类似 SQL 中的 Like 表达式 的行为吗?

任何帮助将不胜感激

【问题讨论】:

  • 我创建了一个与操作相同的环境,但是,当查询词中有空格(例如“Jack J”)时,它似乎会在我这边回复结果很好..

标签: c# azure .net-core azure-cognitive-search


【解决方案1】:

回答你的问题:

  • **Can I split the query by terms like one to be the FirstName and the second one to be the LastName?**

为了说明,我们不举下面的例子:

POST /indexes/Flights/docs/search?api-version=2019-05-06
{
    "search": "First Class, Spacious Seats* +\"Emirates\"",
    "searchFields": "description, title",
    "searchMode": "any",
    "filter": "price ge 60 and price lt 300",
    "orderby": "geo.distance(location, geography'POINT(-449.476235 11.212349)')", 
    "queryType": "full" 
}

对于此请求,搜索引擎会执行以下操作:

  • 过滤掉价格至少为 60 美元且低于 300 美元的文档。
  • 执行查询。在此示例中,搜索查询由短语和术语组成:“First Class, Spacious Seats* +\"Emirates\""(用户通常不输入标点符号,但在示例中包含它可以让我们解释分析器如何处理它)。对于此查询,搜索引擎会扫描在 searchFields 中指定的描述和标题字段,以查找包含“Emirates”的文档,以及“First Class”一词或以“Spacious Seats”为前缀的词条。 searchMode 参数用于匹配任何术语(默认)或所有术语,用于未明确要求 (+) 术语的情况。

  • 按与给定地理位置的接近程度对生成的一组航班进行排序,然后返回给调用应用程序。

我相信,通过这种方式,您将能够进行基于**OR** 的搜索。

  • Do I need to scape the term in a different way?

同上

我可以使用任何通配符来实现类似 SQL 中的 Like 表达式的行为吗?

您可以参考this链接进行通配符搜索。

参考:

https://littlekendra.com/2016/10/25/wildcard-vs-regular-expressions-lucene-query-in-azure-search/

希望对你有帮助。

【讨论】:

  • 感谢您的回答我正在寻找更多建议者,我将尝试 +\"keyword\" 方法,看看是否有效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多