【发布时间】:2017-02-16 06:28:40
【问题描述】:
我开始了解 Faceted Search 和 Lucene 搜索,并对此感到困惑。 哪位大神可以说说分面搜索和Lucene搜索的区别,哪一种场景可以同时应用serach。
我正在使用 graphQL,是否有任何 graphLQ 客户端提供分面搜索功能?
提前致谢
【问题讨论】:
标签: search lucene graphql faceted-search graphql-js
我开始了解 Faceted Search 和 Lucene 搜索,并对此感到困惑。 哪位大神可以说说分面搜索和Lucene搜索的区别,哪一种场景可以同时应用serach。
我正在使用 graphQL,是否有任何 graphLQ 客户端提供分面搜索功能?
提前致谢
【问题讨论】:
标签: search lucene graphql faceted-search graphql-js
分面搜索是 Lucene 提供的一种搜索,它通过特定的数据集进行搜索。它们还提供“正常”查询搜索,即无偏见地搜索所有文档并提供结果。
两篇很好解释分面搜索的好帖子 -
分面搜索是将项目或搜索结果动态聚类到类别中,使用户可以按任何字段中的任何值深入搜索结果(甚至完全跳过搜索)。显示的每个方面还显示搜索中匹配该类别的命中数。然后,用户可以通过对搜索结果应用特定的约束来“向下钻取”。 - Lucidworks
另外,请查看 lucene 开发人员提供的这些 examples。
如果您想深入了解 lucene 架构甚至作为参考,这是一篇很好的论文 - Architecture and Implementation of Apache Lucene。请参阅索引搜索的搜索部分(即 2.2.7)。这是关于 Lucene 的索引搜索的更多概念 -
Lucene 能够实现快速的搜索响应,因为它不是直接搜索文本,而是搜索索引。这相当于通过搜索书后的索引来检索与关键字相关的书中的页面,而不是搜索书中每一页中的单词。
这种类型的索引称为倒排索引,因为它将以页面为中心的数据结构(page->words)反转为以关键字为中心的数据结构(word->pages)。
通常,Lucene 提供组件来在索引内搜索并获得搜索查询的命中。 QueryParser 和 indexSearcher 是大多数基于 Lucene 的搜索引擎中涉及的主要组件。使用帖子列表构建索引后,搜索应用程序将检索索引中的用户查询。它首先使用与索引过程中相同的分析器分析用户查询,然后将用户查询转换为相对于 Lucene 查询语言的 Query 对象。
【讨论】: