[英]parser String boolean expression
我应该构建一个搜索引擎,使任何人都可以输入任何布尔表达式,例如(word1 + word2) - !word3
其中+
表示and
, -
表示or
和!
意思not
。
然后在数据库中搜索这些单词并返回实现该表达式的文档。
所以我用这样的字典:
Dictionary<string, List<int>> WordsAndDoc = new Dictionary<string, List<int>>();
我在数据库中搜索了每个单词,然后在字典中添加了文档ID列表
我声明了两种方法。
首先合并两个列表:
public List<int> Intersect(List<int> P1, List<int> P2)
仅次于联合两个列表:
public List<int> Union(List<int> P1, List<int> P2)
问题是:我应该如何解析TextBox中的布尔表达式,如果存在+
则合并两个单词列表。 如果存在-
然后合并两个列表以最终生成所需文档ID的一个列表...
请帮助我,非常感谢。
不能完全确定我了解这个问题,但是仅使用数据库查询会不会更容易? 例如将他们输入的文本转换为:
(word1 + word2)-!word3
SELECT id FROM table WHERE (field like '% word1 %' and field like '% word2 %')
and not (field like '% word3 %')
还有许多其他方式来执行查询,例如,是否具有全文本或其他内容,取决于数据库,但这似乎更像是通过构造正确的查询而不是事后处理查询来最好地完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.