azure-cognitive-search - 如何获取要在构面和过滤器中使用的键和值
问题描述
我有要用于过滤的构面,因为我认为构面最常见的用途是。
UI 中的过滤器是通过多选下拉菜单进行的。However, the text labels in the facets are quite long, and when selecting multiple, I end up with very long strings to use in the filter. 因此,我想为每个方面文本使用键/ID。但是我如何从一个方面获得一个关键,而不仅仅是价值?
--- Facet example ---
Id | Value
--------------------------------------------------------------------------
1 | This is a very long facet text with many characters, including æøå.
2 | And there are other texts, also with / and & and more æ, ø og å.
如果我在 facet 中有一个 id,从索引中检索,其中 facet 将是具有键和值的复杂类型,那么我可以在 UI 中选择时使用它并对 id 进行过滤而不是长文本( s)。
想法,输入?
谢谢!
解决方案
不幸的是,没有您所要求的“复杂”方面的概念。构面只返回文本和计数,指示它在源文档中出现的频率。
- 当您抱怨过滤器中的字符串很长时,是因为您遇到了请求大小限制吗?在进行查询时,您是否考虑过POST 与 GET ?
search.in
如果您的搜索词基数很高(如此处所述),您是否考虑过使用?
通常,构面并不意味着具有极长的值,因为它们的目的是为最终用户提供快速过滤/分层导航。尽管从技术上讲,您可以使任何字段可分面,但通常表示全文或可能具有高基数的字段不应用作分面
一种可能的解决方法是在您的索引中添加另一个字段,该字段在您的文本字段上使用一些固定长度的散列(这应该很可能使用推送 API;我们没有通过索引器提供此功能);然后,一旦您返回一个方面的列表,您就可以在客户端 (UI) 上应用相同的哈希函数,然后使用生成的(可能很小的)固定长度字符串并针对该“新”字段进行查询。
推荐阅读
- python - 编写此程序的最有效方法是什么?(内有详情)
- jquery - Ajax 问题 [尝试在不刷新页面的情况下更新添加到购物车] - Laravel
- python - BeautifulSoup4 和 Pandas,按照表中的链接下载另一个表,将表连接到一个 Dataframe
- database - .Net Core IDataProtector 与敏感数据库列的始终加密?
- sql - 如何将字段名称分配给 AWS Athena SQL 中的 SQL 计数
- python - Python 同情符号
- java - 无法在 Eclipse 中移动组件 WindowBuilder
- curl - 如何让 curl 重试?
- npm - Vue-cli-build 失败并出现以下错误 ValidationError: child "navigateFallbackWhitelist"
- swiftui - 如何计算剩余的可用垂直空间