lucene - 如何创建更复杂的Lucene查询字符串?

标签 lucene full-text-search lucene.net information-retrieval

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

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

  • - 编辑 -

    我将给出一个查询示例,以供我查询:
    假设我有5个领域:
  • 姓氏
  • 年龄
  • 地址
  • 一切

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

    我应该怎么做呢?

    最佳答案

    使用BooleanQuery类组成查询对象。创建其中一个并将add()其他Query对象添加到其中,以创建更大的析取查询:

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

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

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

    关于lucene - 如何创建更复杂的Lucene查询字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/532512/

    相关文章:

    lucene - 是否有一套从关系数据库构建 Lucene 索引的最佳实践?

    java - Lucene 搜索 Luke 与 Hibernate 搜索不同的结果

    lucene.net - Lucene 中的查询类型

    sql-server - 是否可以将全文搜索 (FTS) 与 LINQ 结合使用?

    sql-server-2005 - SQL 2005 全文目录是随机的 sloooowww

    c# - 尝试搜索 Lucene 目录时出现错误 "No segments* file found"

    lucene.net - 短语同义词分析器Lucene.net?

    java - 我们如何在 Lucene 5 中实例化查询

    lucene - 使用Lucene,如果有人搜索 “red barn”,您还如何返回包含 “redbarn”的结果?

    search - 在 Elastic Search 中模拟字段折叠/按字段分组