您现在的位置是:主页 > 数据库技术 > 数据库技术

Lucene的搜索类型有哪些

IDCBT2021-12-23服务器技术人已围观

简介这篇文章主要介绍“Lucene的搜索类型有哪些”,在日常操作中,相信很多人在Lucene的搜索类型有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解

这篇文章主要介绍“Lucene的搜索类型有哪些”,在日常操作中,相信很多人在Lucene的搜索类型有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Lucene的搜索类型有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

“ Lucene对于查询的方式较多,可以实现TermQuery、BooleanQuery、PhraseQuery、 TermRangeQuery等一系列的基于不同类型的词组的检索。在进行查询的时候可以选择合适的查询方式对文档进行查询。例如数值类型可以采用TermRangeQuery进行查询。”

查询方式大览

    TermQuery(词条搜索) 词条搜索,根据单个单词进行查找的方式进行检索,Term表示的是一个个的单词,而在中文环境下则表示的是一个个的词语(分词后的词语)。例如查询标题中包含PHP的文档。

    Query query = new TermQuery(new Term("title","PHP"))

    BooleanQuery(组合搜索) BooleanQuery是合并多个查询条件的Query,例如合并TermQuery实现查询 标题中包含PHP并且content中同样包含PHP的文档。

    BooleanQuery query = new BoolQuery();
    query.add(new TermQuery(new Term("title","PHP")));
    query.add(new TermQuery(new Term("content","PHP")));

    PhraseQuery(短语搜索) 短语查询提供的是类似于多个关键词的查询,Term输入的只有一个词,而PhraseQuery查询的是一组词。例如查询 PHP是世界上最好的语言 就会给予出相关的文档。PhraseQuery同样有一个比较特殊的地方,就是slop,slop是指两个项之间允许的最大间隔。例如我们输入的查询条件为 世界,语言,可能中间缺少了 上、最好、的 就无法进行检索。那么如果我们想要检索到结果就需要设置slop。

    PhraseQuery query = new PhraseQuery();
    query.add(new Term("title","世界"));
    query.add(new Term("title","语言"));
    query.setslop(x); //允许的跨度或说间隔

    PrefixQuery(前缀查询) 前缀查询,类似于我们常写的SQL LIKE "PHP%"进行匹配查询,简单来说就是实现通过前缀的词进行查询

    PrefixQuery query = new PhrefixQuery(new Term("title","PHP"));

    FuzzyQuery(模糊查询) 模糊查询,它实现的是一种基于编辑距离相似度的检索。编辑距离算法的大概意思就是一个词组转换到另一个词组的最小距离。

    FuzzyQuery query = new FuzzyQUery("title","PHP");

    RegexpQuery(正则表达式查询) 相信正则表达式大家都了解,Lucene实现正则表达式检索是基于词组的正则表达式检索方式

    标签:

    很赞哦! ()

本栏推荐