如何获取要在方面和过滤器中使用的键和值

How to get both key and value to use in in facet and filter

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

UI 中的筛选器是通过多 select 下拉列表。但是,构面中的文本标签很长,当 select 多个时,我最终会得到很长的字符串以用于过滤器。因此,我想对每个构面文本使用 keys/ids。但是我如何从一个方面获取键,而不仅仅是值?

--- 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 将是具有键和值的复杂类型,那么我可以在 selected 中使用它 UI 并对 id 而不是长文本进行过滤。

想法、输入?

谢谢!

不幸的是,没有 "complex" 方面的概念,这正是您所要求的。 仅分面 return 文本和表示它在源文档中出现频率的计数。

  1. 当您抱怨过滤器中的字符串太长时,是因为您在进行查询时 运行 变成了 request size limits? Have you considered POST vs GET 吗?
  2. 如果您的搜索字词基数很高(如 here 所述),您是否考虑过使用 search.in

Facets 通常不应具有非常长的值,因为它们的目的是为最终用户提供快速 filtering/hierarchical 导航。尽管从技术上讲,您可以使任何字段都可以分面,通常是表示全文或可能具有高基数的字段 should not be used as facets

一个可能的解决方法是在您的索引中添加另一个字段,它在您的文本字段上使用一些固定长度的散列(这应该很可能使用推送 API;我们没有该设施通过索引器);然后一旦你得到一个方面列表,你可以在客户端应用相同的散列函数(UI),然后使用生成的(可能是小的)固定长度字符串并查询该 "new" 字段.