文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

利用Lucene如何实现布尔搜索功能

2023-05-31 16:16

关注

本篇文章给大家分享的是有关利用Lucene如何实现布尔搜索功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

什么是lucene

Lucene是apache软件基金会jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。

    Lucene是一个全文搜索框架,而不是应用产品。因此它并不像www.baidu.com 或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品。

 在布尔查询的对象中,包含一个子句的集合,各个子句间都是如“与”、“或”这样的布尔逻辑。Lucene中所遇到的各种复杂查询,最终都可以表示成布尔型的查询。下面代码就是实现了一个简单的布尔查询。

package LuceneSearch; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.Term; import org.apache.lucene.search.BooleanClause; import org.apache.lucene.search.BooleanQuery; import org.apache.lucene.search.Hits; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.TermQuery;  public class BooleanQueryTest {  static final String INDEX_STORE_PATH = "E:\\编程局\\Java编程处\\Index\\";  public static void main(String[] args) {  // TODO Auto-generated method stub  try{   IndexWriter writer = new IndexWriter(INDEX_STORE_PATH,new StandardAnalyzer(),true);   writer.setUseCompoundFile(false);   //创建8个文档   Document doc1 = new Document();   Document doc2 = new Document();   Document doc3 = new Document();   Document doc4 = new Document();   Document doc5 = new Document();   Document doc6 = new Document();   Document doc7 = new Document();   Document doc8 = new Document();   Field f1 = new Field("bookname","钢铁是怎样炼成的",Field.Store.YES,Field.Index.TOKENIZED);   Field f2 = new Field("bookname","英雄儿女",Field.Store.YES,Field.Index.TOKENIZED);   Field f3 = new Field("bookname","浮生六记",Field.Store.YES,Field.Index.TOKENIZED);   Field f4 = new Field("bookname","太平广记",Field.Store.YES,Field.Index.TOKENIZED);   Field f5 = new Field("bookname","文化苦旅",Field.Store.YES,Field.Index.TOKENIZED);   Field f6 = new Field("bookname","白夜行",Field.Store.YES,Field.Index.TOKENIZED);   Field f7 = new Field("bookname","白毛女",Field.Store.YES,Field.Index.TOKENIZED);   Field f8 = new Field("bookname","子不语",Field.Store.YES,Field.Index.TOKENIZED);   doc1.add(f1);   doc2.add(f2);   doc3.add(f3);   doc4.add(f4);   doc5.add(f5);   doc6.add(f6);   doc7.add(f7);   doc8.add(f8);   writer.addDocument(doc1);   writer.addDocument(doc2);   writer.addDocument(doc3);   writer.addDocument(doc4);   writer.addDocument(doc5);   writer.addDocument(doc6);   writer.addDocument(doc7);   writer.addDocument(doc8);   writer.close();   System.out.println("创建索引成功");   IndexSearcher searcher = new IndexSearcher(INDEX_STORE_PATH);   //创建两个词条对象   Term t1 = new Term("bookname","生");   Term t2 = new Term("bookname","记");   TermQuery q1 = new TermQuery(t1);   TermQuery q2 = new TermQuery(t2);   BooleanQuery query = new BooleanQuery();   query.add(q1,BooleanClause.Occur.MUST);   query.add(q2,BooleanClause.Occur.MUST);   Hits hits = searcher.search(query);   for(int i = 0;i<hits.length();i++){   System.out.println(hits.doc(i));   }   System.out.println("搜索成功");  }catch(Exception e){   System.out.println(e.getStackTrace());  }  } } 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯