简单易用搜索-lucene简介

发送到手机
使用"扫一扫"即可发送至手机

在信息爆炸的今天,如何能够快速高效的从海量的数据中查找出自己理想中的信息是一个必不可少的需求,虽然现如今已经有太多太多的优秀平台实现了这些,像各大搜索引擎、社交平台,他们都有自己独有的搜索解决方案。本文主旨不在于介绍他们,而是为大家介绍一种搜索解决方案,也是广泛被大家试用并认可的解决方案,它就是lucene。

下面简单介绍下lucene搜索这个事件中存在的角色,lucene的核心是索引,通过索引来达到快速高效的搜索,他提供简单易用的索引建立和搜索的api,不提供搜索中的内容来源,所以要试用lucene,您还得提供一个数据来源组件,这可能是数据库系统、文件系统、网页抓取等,也可以是其他系统提供的数据服务。

在Lucene下搜索的完整过程如下:


可以看出lucene的核心关键指出就在于索引,索引提供的高效快速的检索让我们可以方便搜索到我们想要的信息。

下面简单介绍下lucene的基本使用方法,代码皆为c#,lucene组件为lucene.net。


创建索引:

Document doc = new Document();
doc.Add(new Field("name", "我是程序猿", Field.Store.YES, Field.Index.NOT_ANALYZED));
doc.Add(new Field("val", "", Field.Store.YES, Field.Index.ANALYZED));
IndexWriter writer = new IndexWriter(FSDirectory.Open(new DirectoryInfo("")), new StandardAnalyzer(), true, IndexWriter.MaxFieldLength.LIMITED);
writer.AddDocument(doc);
writer.Optimize();
writer.Close();

删除索引:

IndexWriter writer = new IndexWriter(FSDirectory.Open(new DirectoryInfo("")), new StandardAnalyzer(), true, IndexWriter.MaxFieldLength.LIMITED);
writer.DeleteAll();
writer.DeleteDocuments(new Term("key", "val"));
writer.Commit();
writer.Close();

搜索:

IndexReader reader = IndexReader.Open("", true);
IndexSearcher searcher = new IndexSearcher(reader);
Analyzer analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29);
QueryParser parser = new QueryParser("", analyzer);
Query query = parser.Parse(queryString);
TopScoreDocCollector collector = TopScoreDocCollector.create(num, true);
Hits hits = searcher.Search(query);
for (int i = 0; i < hits.Length(); i++)
    {
        Document doc = hits.Doc(i);
        Field keyFieldVal = doc.GetField("key");
        string strKey = keyFieldVal.StringValue();
    }


简单易用搜索-lucene简介

简单易用搜索-lucene简介

分享: