`
stone02111
  • 浏览: 212408 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Lucene入门之构建多种搜索请求

阅读更多
词条搜索
       TermQuery

       Term t=new Term( 被搜索的 Field, 搜索关键词 );

       TermQuery q=new TermQuery(t);

组合搜索
       组合搜索可以满足搜索词之间一些逻辑关系。

       BooleanQuery.

       BooleanQuery 的构建方法是,首先常见多个 TermQuery, 然后以多个 TermQuery 为参数构建 BooleanQuery, 在多个 Term 之间要进行逻辑运算。

       例如:

       Term t1=new Term(“text”,”love”);

       TermQuery query1=new TermQuery(t1);

      

       Term t1=new Term(“text”,”you”);

       TermQuery query2=new TermQuery(t1);

      

       BooleanQuery q=new BooleanQuery();

       q.add(query1, BooleanClause.Occur.MUST );

       q.add(query2,BooleanClause.Occur.MUST);

       这个请求可以要求结果种出现 love you.

       BooleanClause.Occur.MUST: 必须满足

       BooleanClause.Occur.MUST_NOT: 必须不满足

       BooleanClause.Occur.SHOULD: 搜索结果可以满足。

       利用这三种逻辑可以构造出一些组合逻辑。

例如:让搜索结果同时满足多个条件,全 MUST 。

        让搜索结果满足一些条件,同时不满足另外一些条件,可以用 MUST 和 MUST_NOT 的组合。

       只包含排斥的条件,全用 MUST_NOT 。

       含有某个关键字后者其他的关键字。可以用 SHOULD 。

       BooleanQuery 对象所支持的子查询数量默认的情况下最多是 1024 个。可以通过 setMaxClauseCount(int num) 方法修改这个值。当然,子查询数量越少,查询的速度会越快。

范围搜索
     让搜索的结果处于某个搜索的范围内。

    RangeQuery 。

    RangeQuery(Term lowerTerm,Term upperTerm,Boolean inclusive);

    第一个参数是起始的 Term, 第二个参数是终止的 Term, 第三个参数表示是否包含边界。

    包含边界值得搜索:

    Term tb=new Term(“id”,”0”);

    Term te=new Term(“id”,”2”);

     RangeQuery q=new RangeQuery(tb,te,true);

    不包含边界的搜索:

    RangeQuery q=new RangeQuery(tb,te,false);

前缀搜索
只要求某一些搜索要求,满足某些前缀。这种情况,就要用前缀搜索来处理。

PrefixQuery(Term prefix)

要建立 PrefixQuery 对象,只需指定一个 Term 为其前缀即可以。

短语搜索
将短语组合起来,形成新的短语。例如将 ” 软 ” ,“件 ”, 组合起来,可以形成“软件”。并且可以设置匹配度。

设置不同的间隔量,可以得到不同的短语,如 ” 软 * 件 ”

构建短语搜索的方法,就是先建立几个 Term, 然后按顺添加到 PharseQuery 对象中,如下所示:

Term t1=new Term(“text”,” 软 ”);

Term t2=new Term(“text”,” 件 ”);

PhraseQuery q=new PharseQuery();

q.add(t1);

q.add(t2);

使用 setSlop(int s) 可以设定短语允许的间隔字符数量。

设置为 1, 那么 ” 软硬件 ” 也符合要求。

多短语搜索
MultiPharseQuery 类,可以先指定一个前缀,然后把其他词语加在它的后面,从而组成词语。

例如指定“飞“作为统一前缀,然后指定“机”,“鸟”作为后缀, Lucene 会组成 ” 飞鸟 ” 和 ” 飞机 ” 两个词进行搜索。

Term t1=new Term(“text”,” 飞 ”);

Term t2=new Term(“text”,” 机 ”);

Term t3=new Term(“text”,” 鸟 ”);

MultiPhraseQuery q=new MultiPhraseQuery();

添加统一前缀

q.add(t1);

添加后缀

q.add(new Term[]{t2,t3});

模糊搜索
FuzzyQuery 类,用于英文搜索。根据设定的匹配度,判断词形的相似度,从而得出相应的结果。

“good” 和 ”god” 在某种情况下,看作模糊匹配。

Term t=new Term(“text”,”god”);

FuzzyQuery q=new FuzzyQuery(t,0.6f);

第二个参数指定模糊度,是一个 float 值,默认是 0.5, 这个值越小,搜索的模糊性就越强。搜索的模糊性越强,结果就越多,越不精确。

通配符搜索
可以用 ”*” 表示任意多个字符,用 ”?” 表示任意一个字符。

WildcardQuery 来实现通配符搜索。

Term t=new Term(“text”,” 飞 *”);

WildcardQuery q=new WildcardQuery(t);

可以匹配以 ” 飞 ” 开始的词语。

正则表达式匹配搜索
支持正则表达式的搜索。是最有用的模糊搜索之一。

Term t=new Term(“text”,” 正则表达式 ”);

RegexQuery q=new RegexQuery(t);


分享到:
评论

相关推荐

    NSDb:自然系列数据库

    自然系列Db NSDb是针对服务层优化的时间序列数据库流。 执照 NSDb是根据许可发行的。 主要特点 ... 请查看我们的以获取有关如何打开任务或错误,从源代码进行构建,运行测试以及打开请求请求的信息。

    java开源包1

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包11

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包2

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包3

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包6

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包5

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包10

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包4

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包8

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包7

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包9

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包101

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    Java资源包01

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    JAVA上百实例源码以及开源项目源代码

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    JAVA上百实例源码以及开源项目

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

Global site tag (gtag.js) - Google Analytics