如何在通过 C# Azure 搜索 API 创建的索引上设置新的 BM25Similarity 算法?

How do I set the new BM25Similarity algorithm on indexes created via the C# Azure search API?

根据新文档,Azure 建议您在 Azure 搜索中对新创建的索引使用新的 BM25 相似度算法。请参阅 link 此处

https://docs.microsoft.com/en-us/azure/search/index-ranking-similarity

这对于那些通过 Azure 门户手动创建索引的人来说非常好。但是我们如何通过 C# azure 搜索 API 添加它呢?在文档中它显示了一个 Json 示例

{
    "name": "indexName",
    "fields": [
        {
            "name": "id",
            "type": "Edm.String",
            "key": true
        },
        {
            "name": "name",
            "type": "Edm.String",
            "searchable": true,
            "analyzer": "en.lucene"
        },
        ...
    ],
    "similarity": {
        "@odata.type": "#Microsoft.Azure.Search.BM25Similarity"
    }
}

但是在APIIndex对象上没有相似对象?添加这个的任何指针将不胜感激。特别是因为我们无法更新现有索引!!

相似性 属性 在 SDK 中尚不可用。我们正在努力尽快将其引入 SDK。截至目前,如您所述,您可以通过预览 API 中的 REST API 对其进行测试。仅供参考,您可能已经知道,但您可以使用 REST 创建索引 API,然后继续使用 SDK 进行任何其他操作(查询、索引等)

BM25Similarity class is now available in the new Azure.Search.Documents 包。您可以使用它来创建索引,如下所示:

SearchIndex index = new SearchIndex("hotels")
{
    Fields =
    {
        new SimpleField("hotelId", SearchFieldDataType.String) { IsKey = true, IsFilterable = true, IsSortable = true },
        new SearchableField("hotelName") { IsFilterable = true, IsSortable = true },
        new SearchableField("description") { AnalyzerName = LexicalAnalyzerName.EnLucene },
        new SearchableField("tags", collection: true) { IsFilterable = true, IsFacetable = true },
        new ComplexField("address")
        {
            Fields =
            {
                new SearchableField("streetAddress"),
                new SearchableField("city") { IsFilterable = true, IsSortable = true, IsFacetable = true },
                new SearchableField("stateProvince") { IsFilterable = true, IsSortable = true, IsFacetable = true },
                new SearchableField("country") { IsFilterable = true, IsSortable = true, IsFacetable = true },
                new SearchableField("postalCode") { IsFilterable = true, IsSortable = true, IsFacetable = true }
            }
        }
    },
    Similarity = new BM25Similarity(),
    Suggesters =
    {
        // Suggest query terms from the hotelName field.
        new SearchSuggester("sg", "hotelName")
    }
};

查看我们的 README 了解更多信息。