Lucene 高级搜索

Posted roadlandscape

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lucene 高级搜索相关的知识,希望对你有一定的参考价值。

1.文本搜索

  QueryParser支持默认搜索域, 第一个参数为默认搜索域.
  如果在执行parse方法的时候, 查询语法中包含域名则从指定的这个域名中搜索, 如果只有查询的关键字,则从默认搜索域中搜索结果.
  需求描述 : 查询名称中包含华为手机关键字的结果.

// Query query = queryParser.parse("华为手机");// 默认在name域中查
// Query query = queryParser.parse("华为 OR 手机");
Query query = queryParser.parse("华为 AND 手机");

2. 数值范围搜索

  需求描述 : 查询价格大于等于100, 小于等于1000的商品

Query query = DoublePoint.newRangeQuery("price", 100, 1000);

3. 组合搜索

  需求描述 : 查询价格大于等于100, 小于等于1000, 并且名称中不包含华为手机关键字的商品
    BooleanClause.Occur.MUST 必须 相当于and, 并且
    BooleanClause.Occur.MUST_NOT 不必须 相当于not, 非
    BooleanClause.Occur.SHOULD 应该 相当于or, 或者
    注意 : 如果逻辑条件中, 只有MUST_NOT, 或者多个逻辑条件都是MUST_NOT, 无效, 查询不出任何数据.

Query query1 = DoublePoint.newRangeQuery("price", 100, 1000);
Query query2 = queryParser.parse("华为 AND 手机");
// 创建布尔查询对象(组合查询对象)
BooleanQuery.Builder query = new BooleanQuery.Builder();
query.add(query1, BooleanClause.Occur.MUST);
query.add(query2, BooleanClause.Occur.MUST_NOT);
TopDocs topDocs = searcher.search(query.build(), 10);

 

以上是关于Lucene 高级搜索的主要内容,如果未能解决你的问题,请参考以下文章

(VIP-朝夕教育)2021-06-06 .NET高级班 39-搜索引擎Lucene的使用

Lucene 实战(第2版)

资料下载《Lucene实战 第2版》

电子书 Lucence实战中文版第2版.pdf

solr 学习片段

快速上手数据挖掘之Solr5搜索引擎高级教程