我们如何在Bigquery上进行全文搜索和方面的工作?

时间:2017-06-12 11:56:40

标签: ruby-on-rails full-text-search google-bigquery faceted-search bigdata

将来我们的网络产品中有数百万的记录。所以我们使用Bigquery进行数据存储和分析。我们必须在我们的搜索页面上构建过滤器,如flipkart,亚马逊提供产品过滤器。

基本上我们在搜索页面的左侧需要不同的过滤器。借助这些过滤器,我们可以看到我们想要的结果。每个过滤器都有其计数,即该类别/术语中的记录计数。因此,我们必须以这样的方式构建查询,即它给出每个类别(术语)的结果和计数。这里的类别意味着我们在电子商务网站上看到不同类型的不同类型,如flipkart,amazon等。

分面搜索(也称为分面导航,导航导航或参数搜索)将搜索结果分解为多个类别,通常显示每个类别的计数,并允许用户“向下钻取”或进一步限制他们的搜索结果基于这些方面。

是否有像solrdb这样的框架/插件可以与Bigquery一起使用以提供上述所需的功能。

Bigquery不适合上述目的吗?我们是否需要为此目的坚持使用任何RDBMS数据库(即postgresql,mysql等)和搜索引擎(即solrdb,弹性搜索等)?

由于

1 个答案:

答案 0 :(得分:0)

  

是否有像solrdb这样可用的框架/插件   使用Bigquery提供上述所需功能?

据我所知,不,没有那样的。

BigQuery仍然可以进行此类分析。您可以通过BQ中的某些查询来模拟搜索引擎数据库将执行的操作,并且它仍然可以在几秒钟内处理您需要的所有内容。您可以使用Regexp操作,Split字符串,使用Javascript UDFs分解单词等。

我仍然认为使用搜索引擎数据库(如你所提到的,solrdb或elasticsearch)你会更好,因为你已经准备好了所有东西,比如分面功能。尽管如此,BQ会在几秒钟内给出结果,而这些引擎可能会在几毫秒内返回响应。

Google还在App Engine中提供Search API这个问题,但您必须对其进行测试,看看它是否适合您。我所说的最大优势是它易于实施,您不必担心管理基础架构。但不确定它与solrdb或elasticsearch的比较。

在我们公司,我们有一些系统可以通过JSON格式接收来自BigQuery的文档,而弹性搜索数据库会对所有内容进行索引并处理查询请求。到目前为止,它对我们来说效果很好。