首页 > 解决方案 > 如何获取要在构面和过滤器中使用的键和值

问题描述

我有要用于过滤的构面,因为我认为构面最常见的用途是。

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)。

想法,输入?

谢谢!

标签: azure-cognitive-search

解决方案


不幸的是,没有您所要求的“复杂”方面的概念。构面只返回文本和计数,指示它在源文档中出现的频率。

  1. 当您抱怨过滤器中的字符串很长时,是因为您遇到了请求大小限制吗?在进行查询时,您是否考虑过POST 与 GET ?
  2. search.in如果您的搜索词基数很高(如此所述),您是否考虑过使用?

通常,构面并不意味着具有极长的值,因为它们的目的是为最终用户提供快速过滤/分层导航。尽管从技术上讲,您可以使任何字段可分面,但通常表示全文或可能具有高基数的字段不应用作分面

一种可能的解决方法是在您的索引中添加另一个字段,该字段在您的文本字段上使用一些固定长度的散列(这应该很可能使用推送 API;我们没有通过索引器提供此功能);然后,一旦您返回一个方面的列表,您就可以在客户端 (UI) 上应用相同的哈希函数,然后使用生成的(可能很小的)固定长度字符串并针对该“新”字段进行查询。


推荐阅读