5

这个问题是从这个问题衍生出来的。我的调查是双重的,但因为两者都是相关的,所以我认为将它们放在一起是个好主意。

  • 如何以编程方式创建查询。我知道我可以开始创建字符串并使用查询解析器解析该字符串。但是当我从其他资源中收集零碎信息时,有一种编程方式可以做到这一点。
  • Lucene 查询的语法规则是什么?

- 编辑 -

我将为我想要进行的查询提供一个需求示例:
假设我有 5 个字段:

  1. 年龄
  2. 地址
  3. 一切

所有字段都是可选的,最后一个字段应搜索所有其他字段。我检查了每个字段,看看它是否是 IsNullOrEmpty()。如果不是,我想附加我的查询的一部分,以便添加相关的搜索部分。
名字和姓氏应该完全匹配,并且比其他字段具有更大的权重。年龄是一个字符串,应该完全匹配。地址可以按顺序变化。一切也可以按顺序变化。

我该怎么办?

4

1 回答 1

6

使用BooleanQuery类来组合查询对象。创建其中一个并向其添加()其他 Query 对象以创建更大的分离查询:

  • BooleanQuery q = new BooleanQuery();
  • q.add(qFirstName, Occur.SHOULD);
  • q.add(qLastName, Occur.SHOULD);
  • ...

可以使用 Term 和 TermQuery 类构建原子查询。

(链接和示例适用于 Lucene Java,但 .NET 应该类似。)

于 2010-04-22T09:09:09.863 回答