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