【问题标题】:Azure-Search, partial word search don't workAzure-Search,部分词搜索不起作用
【发布时间】:2017-01-02 00:13:17
【问题描述】:

搜索部分短语会以奇怪的顺序返回结果, 比如给这两个文件

{
            "@search.score": 0.5696786,
            "Guid": "ce73ca06-f170-46df-b0ef-a6e6e72b76ce",
            "FirstName": "Ruy",
            "LastName": "Bssaf",
            "Phone": "560523791699",
            "CustomerId": "-1",
            "CustomerEmail": "guy@twingocoil",
            "MySuperpharm": "True"
        },
        {
            "@search.score": 0.5619051,
            "Guid": "090c623f-5993-458e-93cc-8ef3d885eb29",
            "FirstName": "ruy",
            "LastName": "reffen",
            "Phone": "0522545833",
            "CustomerId": "76016443160",
            "CustomerEmail": "guy@geffenmedicalcom",
            "MySuperpharm": "False"
        }, 

搜索“guy@twingoco”将在第一个文档之前返回第二个文档,但显然人们希望首先看到第一个文档,其中“CustomerEmail”字段与短语术语几乎相同。

搜索是在门户内完成的,除了搜索词之外没有额外的参数。 搜索完整的电子邮件时,预期的结果会排在第一位。

请不要参考“电子邮件短语”的这种特定情况,我一般问的是如何使搜索也考虑到部分短语。

【问题讨论】:

  • 您的搜索查询是什么,您是如何在 Azure 搜索中设置文档的?您是否将客户电子邮件标记为搜索字段?
  • 我正在添加更多信息来回答您的问题
  • 嗨,伙计,您看到的不是预期的。您能否分享您的确切搜索请求以及您在搜索分数中看到的响应(在您共享的示例中,顺序是正确的)。您可以使用分析 API (docs.microsoft.com/en-us/rest/api/searchservice/test-analyzer) 查看索引内容和搜索词是如何被标记化的。在您的情况下,电子邮件地址在索引和查询时都在 @ 符号处拆分,因此您的搜索查询变为:guy twingoco

标签: azure azure-cognitive-search


【解决方案1】:

这个问题与 Lucene 如何处理电子邮件地址有关。 Azure 搜索使用 Lucene 分析器作为其默认分析器:https://lucene.apache.org/core/5_2_0/core/org/apache/lucene/analysis/Analyzer.html

标准 Lucene 分析器将电子邮件视为单个标记,这就是部分搜索不会为您创建命中的原因。 (类似于如果您搜索“汽车”,即使它是一个前缀,您也不会得到“小心”的命中)。此处解释了有关此问题的更多信息:Querying email addresses indexed by lucene

好消息是您可以创建一个自定义tokanizer 来帮助您解决这个问题:查看接受的答案Using Lucene to search for email addresses 以了解如何实现此类tokanizer,并通过Azure 搜索查看此文档以了解如何使用自定义分析器:https://azure.microsoft.com/en-gb/blog/custom-analyzers-in-azure-search

祝你好运!

【讨论】:

  • 这是一个很好的电子邮件案例解决方案,但我想在任何部分术语搜索的情况下都需要注意。
  • 在这种情况下,请检查这些帖子中提到的前缀分析器。它将为您的术语的每个前缀创建一个标记。例如,“care”将创建标记“c”、“ca”、“car”、“care”,以便部分前缀将创建匹配项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-04
相关资源
最近更新 更多