package com.jiaoyiping.lucene; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.*; import org.apache.lucene.index.DirectoryReader; import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.IndexWriterConfig; import org.apache.lucene.queryparser.classic.ParseException; import org.apache.lucene.queryparser.classic.QueryParser; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Query; import org.apache.lucene.search.ScoreDoc; import org.apache.lucene.search.TopDocs; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; import org.junit.Test; import java.io.IOException; import java.nio.file.Paths; /** * Created with IntelliJ IDEA. * User: 焦一平 * Date: 2015/3/21 * Time: 15:40 * To change this template use File | Settings | File Templates. */ public class TestLuceneIndex { private static String indexPath = "d:\\lucene"; @Test public void testIndex() throws IOException { Directory directory = FSDirectory.open(Paths.get(indexPath)); IndexWriter writer = new IndexWriter(directory,new IndexWriterConfig(new StandardAnalyzer())); Document document = new Document(); //Field有多种实现类可选,不同的实现类有不同的索引策略 document.add(new TextField("name","张三", Field.Store.YES)); document.add(new IntField("age",23,Field.Store.YES)); writer.addDocument(document); writer.commit(); writer.close(); } @Test public void testSearch() throws IOException, ParseException { Directory directory = FSDirectory.open(Paths.get(indexPath)); IndexReader reader = DirectoryReader.open(directory); IndexSearcher searcher = new IndexSearcher(reader); QueryParser queryParser = new QueryParser("name",new StandardAnalyzer()); Query query = queryParser.parse("张三"); TopDocs tds = searcher.search(query, 10); ScoreDoc[] sds = tds.scoreDocs; for(ScoreDoc sd: sds){ Document document = searcher.doc(sd.doc); System.out.println(document.get("name")); System.out.println(document.get("age")); } } }
以上是Lucene最基本的索引和搜索的使用(基于Lucene5.0版本)
执行构建索引操作之后会在索引存放目录下生成索引文件。执行搜索的时候由IndexReader来读取这些索引文件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现