1

https://crate.io是否支持分面(用于分面搜索)?

我在文档中没有找到任何东西。ElasticSearch在 2014 年用聚合替换了 facets ,但是 crate 文档中的聚合部分只讨论了 SQL 聚合函数。

我的用例:我有一个网站列表,每条记录都有一个域和一个语言字段。显示搜索结果时,我想获取搜索结果出现的所有域的列表,以及所有语言的列表,按出现次数排序,以便缩小搜索结果的范围。还应给出这些单面值的结果数量。

带有分面的屏幕截图:截屏

4

2 回答 2

1

没有办法从 crate 本身获得我想要的方面。

相反,我们现在启用 ElasticSearch REST crate.ymlAPI

es.api.enabled: true

.. 并且可以使用ElasticSearch 聚合 API。

于 2017-06-28T07:16:24.237 回答
1

Crate 不直接支持构面或 Elasticsearch 聚合。就像您建议的那样,您始终可以打开 Elasticsearch API。但是,还有其他方法可以获取这些聚合。

1)您是否考虑过向集群发出多个查询?例如,如果您使用 Javascript 动态加载页面,则可以先返回搜索结果,然后再加载构面。这也应该减少应用程序的整体响应时间。

2) 在 CrateDB 2.1.x 中,将支持子查询,这允许您在查询中包含方面:

select q1.id, q1.domain, q1.tag, q2.d_count, q3.t_count  from websites q1,
(select domain, count(*) as d_count from websites where text like '%query%' group by domain) q2,
(select tag, count(*) as t_count from websites where text like '%query%' group by tag) q3
where q1.domain = q2.domain and q1.tag = q3.tag and q1.text like '%query%'
order by q1.id
limit 5;

这为您提供了一个这样的结果表,您可以在其中找到搜索结果以及查询的域和标签计数:

+----+--------------+-----------+---------+-----------+
| id | domain       | tag         | d_count | t_count |
+----+--------------+-------------+---------+---------+
|  1 | example.com  | example     |       2 |       3 |
| 14 | crate.io     | software    |       1 |       4 |
| 17 | google.com   | search      |       5 |       2 |
| 29 | github.com   | open-source |       3 |       3 |
| 47 | linux.org    | software    |       2 |       4 |
+----+--------------+-------------+---------+---------+

免责声明:我是 Crate 的新手 :)

于 2017-06-30T15:04:31.377 回答