这个问题是从分拆这个问题.我的询问是双重的,但由于两者都是相关的,我认为将它们放在一起是个好主意.
如何以编程方式创建查询.我知道我可以开始创建字符串并使用查询解析器解析该字符串.但是当我从其他资源中收集一些信息时,有一种编程方式可以做到这一点.
Lucene查询的语法规则是什么?
- 编辑 -
我将给出一个我想要的查询的需求示例:
假设我有5个字段:
名字
姓
年龄
地址
一切
所有字段都是可选字段,最后一个字段应搜索所有其他字段.我查看每个字段,看看它是否是IsNullOrEmpty().如果不是,我想附加我的查询的一部分,以便添加相关的搜索部分.
名字和姓氏应该是完全匹配,并且比其他字段具有更多权重.年龄是一个字符串,应该完全匹配.地址可以按顺序变化.一切也可以按顺序变化.
我该怎么办呢?
使用BooleanQuery类来组成查询对象.创建其中一个并向其添加()其他Query对象以创建更大的析取查询:
BooleanQuery q = new BooleanQuery();
q.add(qFirstName,Occur.SHOULD);
q.add(qLastName,Occur.SHOULD);
...
可以使用Term和TermQuery类构建原子查询.
(链接和示例适用于Lucene Java,但.NET应该类似.)