首页 > 解决方案 > 为单个和复合词创建搜索过滤器的最有效方法是什么?

问题描述

我们有一种情况,我们正在进行搜索,用户可以提供一个项目列表作为搜索的过滤器。

例如,假设我们正在搜索包含特定食物的食谱。我们可能有一份可能的食物清单,例如:

但我们也希望用户能够搜索“任何肉类”或“任何蔬菜”,并让它返回与所有肉类可能性或所有蔬菜可能性相匹配的任何东西。

我们可以让客户端进行解析,当用户选择“肉类”时,发送所有肉类选择。但是当用户选择这样的更高类别时,我们还需要执行其他逻辑。例如,如果他们选择“任何肉类”,我们可以搜索一个附加数据库,其中包含标记为“肉类”的食谱,而不是单个肉类。

(我正在根据我们实际的业务需求来制作这个例子,这些需求要无聊得多,但这本质上就是这个想法。)

我能想到几个可能的解决方案,它们是同一件事的阴影:

但我觉得我错过了一个在代表群体/个人关系方面可能更优雅的解决方案。是否有解决这种情况的模式?

(PS:这是在 Java 中,但我认为这并不特别重要。)

标签: javasearchdesign-patternsenums

解决方案


在搜索任何内容时,Apache SOLR 和 Elastic Search是最好的。您可以在上述框架中进行所有类型分组、分类和其他类型搜索。我会建议利用 Apache Solr 或 Elastic 搜索,而不是从头开始编写代码。


推荐阅读