【发布时间】:2015-04-28 03:14:47
【问题描述】:
我有一个关于书籍的数据集,每本书都可以使用一种或多种语言。每个用户都注册为具有一种或多种语言。
当用户搜索书籍时,我想只返回他们理解所有语言的书籍。
例如系统中有以下两本书:
Book A: English, French, German
Book B: English, Greek
如果 John 被注册为会英语、德语、法语和意大利语,那么他的查询结果不应包含 Book B。
我的系统目前是使用Apache Solr 编写的,我最终编写了一个插件来执行子集操作(如果记录的语言是用户语言的子集,则记录匹配,其中用户的语言在查询中声明)。
但是,我想转换到 Elasticsearch 后端。然而,这种特殊的子集行为似乎不是核心过滤器包的一部分。我是否遗漏了什么,或者我应该考虑编写一个类似的插件/自定义过滤器?
【问题讨论】:
-
您是否发现 ElasticSearch(或任何其他数据库/搜索系统)是否有办法涵盖此问题?
-
不——我最终得到了一个替代实现,我在其中查询 (elasticsearch) 书籍,然后对它们进行一些快速的 java 操作,以确定用户是否可以理解所有语言。如果某些语言无法理解,则会标记结果集,并将其传达给用户。不过,我很想知道有一种方法可以实现原始设计!
-
到目前为止,这是我自己的笔记:docs.google.com/document/d/…。如果您或其他任何人为此找到现成的解决方案(可能可以处理大型系列),请告诉我。如果我找到什么,我一定会亲自回到这里:)
标签: elasticsearch elasticsearch-plugin