在模糊搜索过程中,为什么天蓝色搜索没有返回所有可能的值?

问题描述 投票:0回答:1

[我的问题是,当我们使用模糊搜索(名字上两个字符的距离)进行名字搜索时,似乎并没有带回所有可能性。

查询类型已满

QueryString-“名字:gra〜2 AND(姓:\” ***** \“或姓:/.* \” ***** \“。* /)”

在此示例中,我使用的是完全匹配项或姓氏上的包含,这在示例中将保持不变

结果

如果我在Azure搜索查询字符串中搜索FirstName:gre〜2,则会返回:

格雷格加里基因

如果我搜索名字:gra〜2,我们会回来:

吉娜加里

如果我搜索名字:grag〜2,我们会回来:

格雷格加里

[我们知道,天蓝色模糊搜索使用的是damerau-levenshtein距离,似乎从“ gra”来看,“ gina”和“ greg”会有2个字符的差异,但只有一个出现。理论上,“ grag”也应返回“ gina”

我想知道是否有人对此有所解释,因为它似乎不一致

我用它来验证字符串“ gra”和“ greg”&“ gina”之间的“距离”

http://fuzzy-string.com/Compare/

这里是有关Lucene语法的azure文档的链接

https://docs.microsoft.com/en-us/azure/search/query-lucene-syntax

这两个都是字段定义

{
  "name": "FirstName",
  "type": "Edm.String",
  "searchable": true,
  "filterable": true,
  "retrievable": true,
  "sortable": true,
  "facetable": false,
  "key": false,
  "indexAnalyzer": null,
  "searchAnalyzer": null,
  "analyzer": "standard.lucene",
  "synonymMaps": []
},

{
  "name": "LastName",
  "type": "Edm.String",
  "searchable": true,
  "filterable": true,
  "retrievable": true,
  "sortable": true,
  "facetable": false,
  "key": false,
  "indexAnalyzer": null,
  "searchAnalyzer": null,
  "analyzer": "standard.lucene",
  "synonymMaps": []
}

**无论使用或不使用姓氏,结果似乎都相同

azure azure-cognitive-search fuzzy-search
1个回答
0
投票

我也希望这些术语能够与您的模糊查询相匹配。只是在进行深入研究之前进行完整性检查,您能否确认分析仪的设置是什么(在查询时间和索引时间)?我只想确认您提到的所有术语实际上都按您期望的方式进行了标记和索引(以及它们的大小写是否按您期望的方式标准化)。您可以使用Analyze API(https://docs.microsoft.com/en-us/rest/api/searchservice/test-analyzer)确认如何对这些术语进行标记。您还提到查询包含与另一个字段(LastName)匹配的AND子句,是否可以确认即使没有第二个子句,FirstName上的结果仍然不是您期望的结果?我只想确保我们消除了实际编辑距离算法之外的所有外部因素。

更新:我使用默认的分析器,没有LastName子句,尝试了这一步。搜索“ gra〜2”成功返回“ Greg”,“ Gary”和“ Gina”。当搜索“ gre〜2”时,我得到的结果相同(与您一样)。搜索“ grag〜2”仅返回“ Greg”和“ Gary”。 “ Gina”未返回,但对我来说似乎是预期的(编辑距离似乎为3)。

© www.soinside.com 2019 - 2024. All rights reserved.