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

2024-02-20

这个问题是从this https://stackoverflow.com/questions/532365/how-to-get-more-out-of-lucene-net问题。 我的询问有两个方面,但因为两者都是相关的,所以我认为将它们放在一起是个好主意。

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

- 编辑 -

我将给出我想要进行的查询的要求示例:
假设我有 5 个字段:

  1. Age
  2. Address
  3. 一切

所有字段都是可选的,最后一个字段应搜索所有其他字段。 我检查每个字段,看看它是否是 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(使用前将#替换为@)

如何创建更复杂的 Lucene 查询字符串? 的相关文章

随机推荐

  • Rails 5 Action Cable 与 Nginx、Puma 和 Redis 一起部署

    我正在尝试使用 Capistrano 将启用 Action Cable 的应用程序部署到 VPS 我正在使用 Puma Nginx 和 Redis 用于电缆 经过几个障碍后 我能够让它在本地开发环境中运行 我正在使用默认的进程内 cable
  • ASP.Net 6自定义WebApplicationFactory抛出异常

    我正在将现有的 ASP Net 5 Web 应用程序迁移到 ASP Net 6 并遇到了通过集成测试的最后障碍 我自定义 WebApplicationFactory 并抛出异常 Changing the host configuration
  • 打印浮点型/双精度型而不带尾随零? [复制]

    这个问题在这里已经有答案了 有几个与此相关的问题 但我还没有看到正确回答这个问题的人 我想打印一个浮点数 但我希望小数位数是自适应的 举个例子 0 gt 0 1234 gt 1234 0 1234 gt 0 1234 0 3 gt 0 3
  • Python pandas dataframe:找到另一列的每个唯一值的最大值

    我有一个大型数据框 从 500k 到 1M 行 其中包含例如这 3 个数字列 ID A B 我想过滤结果以获得如下图所示的表格 其中对于列 id 的每个唯一值 我都有 A 和 B 的最大值和最小值 我能怎么做 编辑 我已经更新了下面的图像以
  • 缩短 GCC 错误消息

    每当gcc无法找到具有多个重载的函数的匹配重载 它会给出一行又一行的错误 解释尝试了哪个重载以及为什么不使用它 虽然它通常很有用 但也常常没有用 因为问题是调用站点上的一个简单的拼写错误 在这种特殊情况下 它甚至没有帮助 因为甚至需要相当长
  • 如何通过比较两个 C# 对象来创建 JsonPatchDocument?

    鉴于我有两个相同类型的 C 对象 我想比较它们以创建 JsonPatchDocument 我有一个 StyleDetail 类定义如下 public class StyleDetail public string Id get set pu
  • Firebase集合组查询ID/密钥[重复]

    这个问题在这里已经有答案了 我一直在关注以下文档 https firebase google com docs firestore query data queries collection group query https fireba
  • 打破浮动图像周围的长词

    我正在尝试在移动设备上创建页面显示 它的布局是这样的 some text around the image some image text around the image some text around the image some w
  • Django - TypeError - save() 得到了意外的关键字参数“force_insert”

    我是 Django 新手 我无法弄清楚这个错误 请帮助 它给出了 TypeError save 得到了意外的关键字参数 force insert 我测试了下面的代码 他们能够保存新用户注册 但现在它不会再保存了 这是我认为有问题的views
  • 以编程方式添加选项卡,C# 选项卡控件

    大家好 我想问一下 如何以编程方式添加选项卡 对于我的问题 我有一个选项卡控件 默认情况下只有一个选项卡 我有一个按钮 当我单击该按钮时 将添加另一个选项卡 所以将是两个选项卡 请帮助我使用 c 和 xaml tabControl Item
  • 在 MVC4 中使用 DotNetOpenAuth 的 LinkedIn 完整个人资料详细信息

    我的 MVC4 应用程序允许使用 LinkedIn 帐户登录 我想提取登录用户的 linkedIn 中可用的所有详细信息 目前我做了以下工作 在我的 AuthConfig cs 中 Dictionary
  • Scala 宏:类型化(又名类型检查)树和非类型化树之间有什么区别

    我正在开始使用 scala 宏 它们非常棒 但是我遇到了类型化 又名类型检查 和非类型化之间的区别Trees 例如 您不能调用c eval由于某种原因使用类型检查的树 我在 scala 宏文档中找不到关于此 类型检查 的文档 我知道他们仍在
  • Angularjs如何在切换路由时取消资源承诺

    我刚刚接触 Angularjs 我有一个问题 我认为与承诺有关 假设我加载路由 A 它通过其控制器发出多个 ajax 请求 allSites AllSites query id categoryID allSites promise the
  • 如何在没有映射到 web.xml 的情况下调用 servlet?

    如何使用以下 URL 调用简单的 servlet http localhost 8080 servlet MyServlet http localhost 8080 servlet MyServlet 我把它放在文件夹中 tomcat we
  • 获取系统插入的正确方法

    我一直在使用view rootWindowInsets stableInsetTop和 Bottom 来获取状态栏和导航栏的高度 但是现在已弃用 并且文档建议使用 https developer android com reference
  • 将数据从 C# 传递到 jQuery

    我是一名独立程序员 正在寻求如何最好地处理以下情况的建议 我目前正在开发一个 C Winforms 应用程序 我正在编写的新功能允许用户创建Processing js 草图以进行数据分析 我构建了一个Processing js IDE 正在
  • 使用包含 NSDictionary 的 NSMutableArray 进行快速枚举

    是否可以对包含 NSDictionary 的 NSArray 使用快速枚举 我正在运行一些 Objective C 教程 以下代码将控制台踢入 GDB 模式 NSMutableArray myObjects NSMutableArray a
  • GIT_MERGE_AUTOEDIT=默认为否

    在我的 git v 1 7 10 2 中 我必须在终端中执行以下操作 GIT MERGE AUTOEDIT no export GIT MERGE AUTOEDIT 所以 每次合并时 我都不会强制发布消息 我应该把它放在哪里 这样默认情况下
  • C++ 流作为成员变量

    我有一个 C 类 我想保存一个用于日志记录的流 在构造对象之后应该能够设置 并且可能重置 流 应该可以将流设置为std cout 或者作为记录到文件的文件流 或者作为字符串流 它只是忽略数据 a dev null各种各样的 无论如何 它应该
  • 如何创建更复杂的 Lucene 查询字符串?

    这个问题是从this https stackoverflow com questions 532365 how to get more out of lucene net问题 我的询问有两个方面 但因为两者都是相关的 所以我认为将它们放在一