【问题标题】:Azure Cognitive search, Lucene, Full words to return abbreviated resultsAzure 认知搜索、Lucene、全词返回缩写结果
【发布时间】:2021-10-14 10:54:34
【问题描述】:

Azure 认知搜索中是否也有办法匹配缩写词?

例如,在我们的数据集上,我们有

5510 S Rice Ave

5510 ST something something

我们正在做一个lucene搜索,我们尝试使用模糊搜索,参数如下:

&search=5510 STR~
&top=100
&zipcode=77081
&query-type=full
&search-fields=Address

但是,我们如何得到上面的查询

5510 ST something something

但不是

5510 S Rice Ave??

5510 S 中的 5510 S Rice Ave 不应该也是 &search=5510 STR~ 模糊搜索的一部分吗?

我们的查询应该是什么样子才能包含 5510 S?

另外,S 应该是“SOUTH”的缩写,查询应该是什么样子,以便任何人搜索

5510 SOUTH

也会得到

5510 S Rice?

【问题讨论】:

    标签: azure-cognitive-search


    【解决方案1】:
    1. 应该。除非您的zipcode 过滤器不满足5510 S Rice Ave,否则搜索查询将返回两个结果。我刚刚使用此示例数据进行了测试,并确认它有效。
    2. Synonym maps。您需要创建同义词映射。
    POST /synonymmaps?api-version=<api-version>
    {
        "name": "acronyms",
        "format": "solr",
        "synonyms": "
            S, South, Southern\n
            N, North, Northern\n"
            W, West, Western\n"
            E, East, Eastern\n"
            NE, NorthEast, NorthEastern\n"
            SW, SouthWest, SouthWestern\n"
    }
    

    然后,您必须为您的字段启用同义词映射

    POST /indexes?api-version=<api-version>
    {
        "name":"<index-name>",
        "fields":[
            {
                "name":"name",
                "type":"Edm.String",
                "searchable":true,
                "synonymMaps":[
                "acronyms"
                ]
            }
        ]
    }
    
    

    执行此操作后,带有缩写的查询将自动获得完整的结果,反之亦然。每个资源最多允许 20 个同义词映射,并将在索引之间共享。

    【讨论】:

    • 欣赏答案。目前我们正在检查导致错误的其他原因是什么,但使用同义词的建议很有趣,我们将对此进行调查
    猜你喜欢
    • 2022-11-11
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    • 2014-03-27
    • 1970-01-01
    • 2022-09-30
    • 1970-01-01
    相关资源
    最近更新 更多