我正在尝试实现未排序的布尔检索。为此,我需要构建一棵树并执行 DFS 来检索文档。我有叶子节点,但我很难构建树。
例如:查询 = OR ( AND (maria sharapova) 网球)
结果:
或者 | | 和网球 | | 玛丽亚莎拉波娃
我使用 DFS 遍历树并计算某些文档 ID 的布尔等效值,以从语料库中识别所需的文档。有人可以帮助我使用 python 设计这个吗?我现在已经解析了查询并检索了叶节点。
编辑:我是新来的,所以对缺乏清晰度表示歉意。我基本上是在尝试构建一个非常幼稚的搜索引擎。因此,用户输入任何布尔查询,例如:OR(AND (maria sharapova) 网球)。我有一个维基百科文档语料库,根据您键入的查询显示给用户。
到目前为止,我已经解析了查询以检索单个运算符(如 OR、AND 等)。并且,个人搜索词(玛丽亚、网球等)。解析代码只是一个函数,它基本上将所有运算符和查询术语按类型分组。即(玛丽亚莎拉波娃),(网球),或,和。我以这种方式解析了这个函数,以便自下而上地创建一个树。现在,对相应的关键字(如网球、玛丽亚、莎拉波娃等)使用倒排列表,我对倒排列表执行布尔运算以获得某个“documentid”。然后将此 documentid 传递给 API,然后该 API 将检索正确的维基百科页面。
只是为了更详细地解释该主题,请参阅此文档以获取有关我手头问题的更多信息: http ://www.ccs.neu.edu/home/jaa/CSG339.06F/Lectures/boolean.pdf