分面搜索和Lucene搜索之间的区别?

时间:2017-02-16 06:28:41

标签: search lucene graphql faceted-search graphql-js

我开始了解Faceted Search和Lucene的搜索,并对此问题感到困惑。 任何人都可以了解Faceted Search和Lucene搜索之间的区别,哪种情况可以同时适用于serach。

我正在使用graphQL,是否有任何graphLQ客户端提供分面搜索功能?

提前致谢

1 个答案:

答案 0 :(得分:1)

分面搜索是Lucene提供的一种搜索特定数据集的搜索。他们还提供正常的'查询搜索,无需偏见即可搜索所有文档并提供结果。

两篇很好的帖子可以很好地解释分面搜索 -

Faceted Search with Solr

Faceted Search - User's Guide

  

分面搜索是将项目或搜索结果动态聚类到类别中,使用户可以通过任何字段中的任何值深入搜索结果(甚至完全跳过搜索)。显示的每个方面还显示搜索中与该类别匹配的命中数。然后,用户可以通过对搜索结果应用特定约束来“向下钻取”。 - Lucidworks

另外,请查看lucene开发者提供的这些examples

如果你想深入了解lucene架构或甚至作为参考,这是一篇很好的论文 - Architecture and Implementation of Apache Lucene。有关索引搜索,请参阅搜索部分(即2.2.7)。以下是关于Lucene索引搜索的更多概念 -

Taken from the paper Architecture and Implementation of Apache Lucene

Lucene能够实现快速搜索响应,因为它不是直接搜索文本,而是搜索索引。这相当于通过搜索书后面的索引来检索与关键词相关的书中的页面,而不是搜索书中每页中的单词。

这种类型的索引称为反向索引,因为它将以页面为中心的数据结构(页面 - >单词)反转为以关键字为中心的数据结构(word-> pages)。

通常,Lucene提供组件以在索引内搜索并获取搜索查询的命中。 QueryParser和indexSearcher是大多数基于Lucene的搜索引擎所涉及的主要组件。使用过帐列表构建索引后,搜索应用程序将在索引中检索用户查询。它首先使用与索引过程相同的分析器分析用户查询,然后将用户查询转换为与Lucene查询语言相关的Query对象。