如何索引复杂的逻辑表达式?

1yjd4xko  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(0)|浏览(155)

我正在做一个项目,用户应该能够在文档中定义一个逻辑表达式。要搜索文档,它们应该提供表达式中使用的一组属性,并接收逻辑表达式计算到的匹配文档 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 那就什么也不该归还了。
目前,我们可以在内存中通过生成一个二叉表达式树来处理它们,以简化计算。但是,对于我们在每个请求中需要处理的大量文档(获取所有文档、解析表达式以构建树、计算表达式),它的速度非常慢。
所以,如果可能的话,我们想把这项工作委托给搜索引擎。
有没有一种方法可以在搜索引擎中以二叉树(或其他形式,如波兰符号)的形式索引这些表达式?
如何建立一个查询,使表达式的计算将发生在搜索引擎?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题