当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何创建更复杂的Lucene查询字符串?》经验,为你挑选了1个好方法。

这个问题是从分拆这个问题.我的询问是双重的,但由于两者都是相关的,我认为将它们放在一起是个好主意.

如何以编程方式创建查询.我知道我可以开始创建字符串并使用查询解析器解析该字符串.但是当我从其他资源中收集一些信息时,有一种编程方式可以做到这一点.

Lucene查询的语法规则是什么?

- 编辑 -

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

    名字

    年龄

    地址

    一切

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

我该怎么办呢?



1> Fred Foo..:

使用BooleanQuery类来组成查询对象.创建其中一个并向其添加()其他Query对象以创建更大的析取查询:

BooleanQuery q = new BooleanQuery();

q.add(qFirstName,Occur.SHOULD);

q.add(qLastName,Occur.SHOULD);

...

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

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

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有