如何解决如何索引复杂的逻辑表达式?
我正在一个项目中,用户应该能够在文档中定义逻辑表达式。要搜索文档,他们应该提供在表达式中使用的一组属性,并接收匹配的文档,其中逻辑表达式的评估结果为true
。
因此,我们需要索引看起来像[var][operator][value]
的表达式,其中[var]
和[value]
也可以组成为[var][operator][value]
。
让我们考虑一个例子。 用户指定以下逻辑表达式:
(color=read AND size=small) OR (color=blue AND (size=medium OR size=large)
我们需要将其放在搜索引擎中以便查询。然后在查询中,如果传递参数color = red
和size = small
,则用户应获取索引文档,因为表达式的计算结果为true
。但是,如果通过color = blue
和size = small
,则不应返回任何内容。
当前,我们可以通过生成binary expression tree来简化评估,从而在内存中处理它们。但是,处理每个请求中需要处理的大量文档非常缓慢(获取所有文档,解析表达式以构建树,评估表达式)。
因此,我们尽可能将这项工作委托给搜索引擎。
是否可以在搜索引擎中以二叉树的形式(或其他形式,例如polish notation)索引此类表达式?
以及如何构建查询以使表达式求值在搜索引擎中进行?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。