我在IR系统中使用“AND”,“OR”或“NOT”来处理一些布尔查询,并且想知道如何检查无效查询。例如,这些查询将无效:
“tom OR”,“tom NOT”,“beans AND OR beans”,“NOT AND mad”,“(猫和 狗“[自(不完整)]等...
这些术语无效,因为布尔查询每边需要2个“单词”(除非我们没有)。有关这些事情的错误检查的提示吗?我迷失了,想要一个方向或什么的。
谢谢!
答案 0 :(得分:2)
最好的方法可能是将查询解析为某种语法树。因为它非常简单,你可以自己编写解析器。您也可以使用pyparsing之类的东西来处理这个问题。
使用正则表达式可能会非常痛苦 - 它们不具有上下文相关性,因此您很快就会在this situation中结束。