azure - Azure 搜索 - 用于提升结果的自定义功能
问题描述
我正在尝试将“复杂”功能移至 Azure 搜索。此函数根据过滤器数据(来自搜索查询)和存储在结果元素中的数据计算每个结果元素的分数。分数用于提升结果。根据我的研究 Azure 搜索提供了结果提升,但它对我的要求来说太简单了。
示例函数:
//filterElementsIds - ids taken from search query filter
public double Score(IEnumerable<string> filterElementsIds, ResultElement element)
{
double score = 0;
foreach(var elem in element.ScoreForFilters)
if (filterElementsIds.Any(x => x == elem.Key))
score += elem.Value * 1.5;
return score;
}
目前,我正在遍历 Azure 搜索返回的每个结果 - 计算我的应用程序中的分数和排序元素。
是否可以在 Azure 搜索中实现此类功能以改进提升结果的过程?
解决方案
我不确定我是否完全理解您的问题,但如果某些文档的键等于您的“filterElements”集合中的任何 ID,您似乎正在尝试提高其分数。如果是这样,您可以使用 lucene 查询语言来制作执行此操作的查询: https ://docs.microsoft.com/en-us/azure/search/search-query-lucene-examples
你可以做一个看起来像这样的搜索
OriginalSearchTerm OR (OriginalSearchTerm AND key:("filterID1" OR "filterID2" OR "filterID3"))
这样,匹配原始搜索词以及将过滤器 ID 之一作为“关键”字段的一部分的文档将比仅匹配原始搜索词的文档匹配更高。在这种情况下,您还可以使用术语提升来对关键字段进行特定的提升。如果是这样,您可以使用“术语提升”来实现这一点吗? https://docs.microsoft.com/en-us/azure/search/search-query-lucene-examples#example-5-term-boosting
OriginalSearchTerm OR (OriginalSearchTerm AND key:("filterID1" OR "filterID2" OR "filterID3")^2)
推荐阅读
- scala - 在 Scala spark 中实现动态字符串插值?
- visual-studio-code - 合并VSCode jupyter笔记本中的单元格?
- javascript - JS, let x = (Math.random()*2|0) 输出解释
- android - 哪种方式最适合在 Android 应用中播放 5 首歌曲?
- python - form_valid() 的 Django UpdateView 条件
- wpf - 样式资源中的事件未触发。为什么?
- sql-server - 为什么我无法从我的 Windows 计算机连接到 Linux MSSQL (SQLEXPRESS)?
- python - 为什么在回调排队时停止 tkinter mainloop 会导致交互模式下的错误?
- java - 如何配置 Wildfly 部署 Maven 项目
- docker - 推送和标记后,Google Cloud Build“没有这样的图像”上缺少 Docker 图像