如何在通过 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 了解更多信息。
根据新文档,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 了解更多信息。