这个问题是从this https://stackoverflow.com/questions/532365/how-to-get-more-out-of-lucene-net问题。
我的询问有两个方面,但因为两者都是相关的,所以我认为将它们放在一起是个好主意。
- 如何以编程方式创建查询。我知道我可以开始创建字符串并使用查询解析器解析该字符串。但当我从其他资源收集零碎的信息时,有一种编程方法可以做到这一点。
- Lucene 查询的语法规则是什么?
- 编辑 -
我将给出我想要进行的查询的要求示例:
假设我有 5 个字段:
- 名
- 姓
- Age
- Address
- 一切
所有字段都是可选的,最后一个字段应搜索所有其他字段。
我检查每个字段,看看它是否是 IsNullOrEmpty()。如果不是,我想附加我的查询的一部分,以便它添加相关的搜索部分。
名字和姓氏应该完全匹配,并且比其他字段具有更大的权重。年龄是一个字符串,应该完全匹配。地址的顺序可能会有所不同。一切的顺序也可以不同。
我该怎么办?
Use the 布尔查询 http://lucene.apache.org/java/3_0_1/api/all/org/apache/lucene/search/BooleanQuery.html类来组成查询对象。创建其中之一并向其 add() 其他 Query 对象以创建更大的析取查询:
- BooleanQuery q = new BooleanQuery();
- q.add(qFirstName, Occur.SHOULD);
- q.add(qLastName, Occur.SHOULD);
- ...
原子查询可以使用 Term 和 TermQuery 类构建。
(链接和示例适用于 Lucene Java,但 .NET 应该类似。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)