解析AND,或查询以制定sql

时间:2010-01-11 10:37:09

标签: logic search-engine

我正在开发一个迷你搜索引擎,我想实现基于逻辑运算符AND OR的搜索功能......

我在解析包含AND,OR,NOT的查询时遇到困难...特别是当括号...(猫或狗)没有(自行车不是麦克风)时

对于简单的AND和OR查询,它显然太简单了,我想出了如何制定sql查询,但是当它变得那么复杂时我迷失了!!!

我不确定搜索引擎是否具有此功能,但我想深入了解它是为了学习目的。

我为我上一个不太清楚的问题道歉,我希望这次我做得更好。

3 个答案:

答案 0 :(得分:2)

我建议查看像ANTLR这样的词法分析器/解析器生成器。一个简单的语法应该可以解决你。对于这样的事情甚至可能有existing grammar

答案 1 :(得分:1)

查看searchparser.py项目中的pyparsing示例。

它显示了一种实施方式:

  • AND,
  • OR,
  • 不,
  • 分组和
  • 通配符。

全部用293行代码完成(包括评论和测试)......

答案 2 :(得分:0)

如果您使用的是MySQL,则可以使用内置布尔搜索:

http://dev.mysql.com/doc/refman/5.1/en/fulltext-boolean.html