- 浏览: 583833 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (174)
- JBPM (3)
- WWF (0)
- JavaScript (11)
- J2EE (40)
- OperationSystem (11)
- 数据库 (12)
- CSS (1)
- Ajax (2)
- J2SE (30)
- Tools (10)
- 服务器中间件 (3)
- 异常 (0)
- Flex (5)
- jQuery (11)
- html (9)
- Ejb (1)
- HTML5 Shiv–让该死的IE系列支持HTML5吧 (1)
- Spring (9)
- Quartz (3)
- log4j (1)
- maven (1)
- cpdetector (1)
- JSON (1)
- log4jdbc (1)
- asm (8)
- FusionCharts (1)
- jqplot (1)
- highcharts (1)
- excanvas (1)
- html5 (1)
- jpcap介绍 (1)
- weblogic (3)
- URLURLClassLoader (0)
- URLClassLoader (1)
- ant (2)
- ivy (2)
- nexus (1)
- IT (0)
- LoadRunner (1)
- SCSS (1)
- ruby (1)
- webstorm (1)
- typescript (1)
- Jboss7 (1)
- wildfly (1)
- oracle (5)
- esb (0)
- dubbo (2)
- zookeeper (3)
- eclipse (1)
- Android (2)
- Studio (1)
- Google (1)
- 微信 (1)
- 企业号 (1)
- Linux (13)
- Oracle12c (1)
- Hadoop (1)
- InletexEMC (1)
- Windows (1)
- Netty (3)
- Marshalling (2)
- Protobuf (1)
- gcc (1)
- Git (1)
- GitLab (1)
- shell (2)
- java (3)
- Spring4 (1)
- hibernate4 (1)
- postgresql (1)
- ApacheServer (2)
- Tomcat (2)
- ApacheHttpServer (2)
- realvnc (1)
- redhat (7)
- vncviewer (1)
- LVS (4)
- LVS-DR (1)
- RedHat6.5 (5)
- LVS-NAT (1)
- LVS-IPTUNNEL (2)
- LVS-TUN (1)
- keepalived (2)
- yum (1)
- iso (1)
- VMware (1)
- redhat5 (1)
- ha (1)
- nginx (2)
- proguard (1)
- Mat (1)
- DTFJ (1)
- axis2 (1)
- web service (1)
- centos (1)
- random (1)
- urandom (1)
- apache (1)
- IBM (1)
- cve (1)
- 漏洞 (1)
- JDBC (1)
- DataSource (1)
- jdk (1)
- tuxedo (2)
- wtc (1)
最新评论
-
skying007:
好资料,谢谢分享给啊
FusionCharts在服务器端导出图片(J2EE版) -
cgnnzg:
大神好 可以发一份源码给我学习么 多谢了 978241085 ...
springmvc+dubbo+zookeeper -
jifengjianhao:
求源码:854606899@qq.com
springmvc+dubbo+zookeeper -
wdloyeu:
shihuan8@163.com邮箱网盘在哪,没找到。能给份源 ...
Java Socket长连接示例代码 -
huangshangyuanji:
求代码:45613032@qq.com
springmvc+dubbo+zookeeper
IndexerMmseg4j.java代码如下:
SearcherMmseg4j.java代码如下:
mytestfile.txt内容如下:
import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import org.apache.commons.lang.SystemUtils; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.cjk.CJKAnalyzer; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.document.Field.Index; import org.apache.lucene.document.Field.Store; import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.IndexWriterConfig; import org.apache.lucene.index.Term; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; import org.apache.lucene.util.Version; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.chenlb.mmseg4j.analysis.SimpleAnalyzer; public class IndexerMmseg4j { private final static Logger logger = LoggerFactory.getLogger(IndexerMmseg4j.class); static Version matchVersion = Version.LUCENE_36; static String indexPath = "D:" + SystemUtils.FILE_SEPARATOR + "contentWindow" + SystemUtils.FILE_SEPARATOR + "index"; static String filePath = "D:" + SystemUtils.FILE_SEPARATOR + "contentWindow" + SystemUtils.FILE_SEPARATOR + "files" + SystemUtils.FILE_SEPARATOR + "mytestfile.txt"; static Analyzer analyzer = new StandardAnalyzer(matchVersion); static Analyzer a3 = new CJKAnalyzer(matchVersion); //二分法分词 static Analyzer a4 = new SimpleAnalyzer(); //中文分词器mmseg4j中提供的一种分词器 public static byte[] getBytesFromFile(File file) { if(file != null){ FileInputStream fis; try { fis = new FileInputStream(file); if(fis != null){ int len = fis.available(); byte[] bytes = new byte[len]; fis.read(bytes); //现在file中的内容全读到了byte[]数组中 return bytes; } } catch (FileNotFoundException e) { logger.error(e.getMessage()); e.printStackTrace(); } catch (IOException e) { logger.error(e.getMessage()); e.printStackTrace(); } } /* if (file == null){ return null; } try { FileInputStream stream = new FileInputStream(file); ByteArrayOutputStream out = new ByteArrayOutputStream(1000); byte[] b = new byte[1000]; int n; while ((n = stream.read(b)) != -1) out.write(b, 0, n); stream.close(); out.close(); return out.toByteArray(); } catch (IOException e){ } */ /* InputStream is; try { is = new FileInputStream(file); long length = file.length(); if (length > Integer.MAX_VALUE) { // File is too large } byte[] bytes = new byte[(int)length]; int offset = 0; int numRead = 0; while (offset < bytes.length && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) { offset += numRead; } if (offset < bytes.length) { throw new IOException("Could not completely read file " + file.getName()); } is.close(); return bytes; } catch (FileNotFoundException e) { logger.error(e.getMessage()); e.printStackTrace(); } catch (IOException e) { logger.error(e.getMessage()); e.printStackTrace(); } */ return null; } public static byte[] addByte(byte[] array1, byte[] array2) { if(array1.length==0 && array2.length==0){ return null; } byte[] message = new byte[array1.length+array2.length]; for(int i=0; i<message.length; i++){ if(i < array1.length){ message[i] = array1[i]; }else{ message[i] = array2[i-array1.length]; } } return message; } @org.junit.Test public static void testCreateIndex(){ System.out.println(indexPath); System.out.println(filePath); Directory dir; try { dir = FSDirectory.open(new File(indexPath)); Document doc = new Document(); Field titleField = new Field("title", new File(filePath).getName(), Store.YES, Index.ANALYZED); String content = new String(IndexerMmseg4j.getBytesFromFile(new File(filePath)), "GB18030"); /* * Store.YES : 用于存储字段值。适用于显示搜索结果的字段。例如,文件路径和URL * Store.NO : 没有存储字段值。例如,电子邮件消息正文 * Index.ANALYZED : 用于字段索引和分析。例如,电子邮件消息正文和标题 * Index.NO : 适用于未搜索的字段。例如,仅用于存储字段 * Index.NOT_ANALYZED : 用于编制索引但不分析的字段。它在整体中保留字段的原值。例如,日期和个人名称 * */ Field contentField = new Field("content", content, Store.YES, Index.ANALYZED); doc.add(titleField); doc.add(contentField); IndexWriterConfig iwc = new IndexWriterConfig(matchVersion, a4); //默认create_or_append iwc.setOpenMode(IndexWriterConfig.OpenMode.CREATE); //总是重新创建 IndexWriter iw = new IndexWriter(dir, iwc); iw.addDocument(doc); iw.close(); } catch (IOException e) { logger.error(e.getMessage()); e.printStackTrace(); } } @org.junit.Test public static void testDeleteIndex(){ Directory dir; try { dir = FSDirectory.open(new File(indexPath)); IndexReader indexReader = IndexReader.open(dir); indexReader.deleteDocuments(new Term("content", "上海")); indexReader.close(); } catch (IOException e) { logger.error(e.getMessage()); e.printStackTrace(); } } }
SearcherMmseg4j.java代码如下:
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.StringReader; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.nio.charset.Charset; import org.apache.commons.lang.SystemUtils; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.cjk.CJKAnalyzer; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.analysis.tokenattributes.OffsetAttribute; import org.apache.lucene.analysis.tokenattributes.TermAttribute; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.document.Field.Index; import org.apache.lucene.document.Field.Store; import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.IndexWriterConfig; import org.apache.lucene.index.KeepOnlyLastCommitDeletionPolicy; import org.apache.lucene.index.Term; import org.apache.lucene.queryParser.MultiFieldQueryParser; import org.apache.lucene.queryParser.ParseException; import org.apache.lucene.queryParser.QueryParser; import org.apache.lucene.search.FuzzyQuery; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.PrefixQuery; import org.apache.lucene.search.Query; import org.apache.lucene.search.ScoreDoc; import org.apache.lucene.search.TermRangeQuery; import org.apache.lucene.search.TopDocs; import org.apache.lucene.search.WildcardQuery; import org.apache.lucene.search.highlight.Formatter; import org.apache.lucene.search.highlight.Fragmenter; import org.apache.lucene.search.highlight.Highlighter; import org.apache.lucene.search.highlight.InvalidTokenOffsetsException; import org.apache.lucene.search.highlight.QueryScorer; import org.apache.lucene.search.highlight.Scorer; import org.apache.lucene.search.highlight.SimpleFragmenter; import org.apache.lucene.search.highlight.SimpleHTMLFormatter; import org.apache.lucene.search.highlight.TokenSources; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; import org.apache.lucene.store.RAMDirectory; import org.apache.lucene.util.AttributeSource; import org.apache.lucene.util.Version; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.chenlb.mmseg4j.analysis.SimpleAnalyzer; public class SearcherMmseg4j { private final static Logger logger = LoggerFactory.getLogger(SearcherMmseg4j.class); static Version matchVersion = Version.LUCENE_36; static String indexPath = "D:" + SystemUtils.FILE_SEPARATOR + "contentWindow" + SystemUtils.FILE_SEPARATOR + "index"; static String filePath = "D:" + SystemUtils.FILE_SEPARATOR + "contentWindow" + SystemUtils.FILE_SEPARATOR + "files" + SystemUtils.FILE_SEPARATOR + "mytestfile.txt"; static Analyzer analyzer = new StandardAnalyzer(matchVersion); static Analyzer a3 = new CJKAnalyzer(matchVersion); //二分法分词 static Analyzer a4 = new SimpleAnalyzer(); //中文分词器mmseg4j中提供的一种分词器 public static byte[] getBytesFromFile(File file) { if(file != null){ FileInputStream fis; try { fis = new FileInputStream(file); if(fis != null){ int len = fis.available(); byte[] bytes = new byte[len]; fis.read(bytes); //现在file中的内容全读到了byte[]数组中 return bytes; } } catch (FileNotFoundException e) { logger.error(e.getMessage()); e.printStackTrace(); } catch (IOException e) { logger.error(e.getMessage()); e.printStackTrace(); } } return null; } @org.junit.Test public static void testSearch(){ Directory dir; try { dir = FSDirectory.open(new File(indexPath), null); IndexSearcher is = new IndexSearcher(dir); System.out.println(is.maxDoc()); String[] fields = {"title", "content"}; QueryParser qp = new MultiFieldQueryParser(matchVersion, fields, a4); // QueryParser qp = new QueryParser(matchVersion, "content", analyzer); // Query query = qp.parse("汉字"); Query query = qp.parse("上海"); // System.out.println(query.toString("content")); /* Query wildcardQuery = new WildcardQuery(new Term("content", "How*")); //实现通配符查询(*表示零个以上,?表示1个以上) Query fuzzyQuery = new FuzzyQuery(new Term("content", "administritor")); //查找与administritor最相近的单词(主要检索拼写错误) Term beginDate = new Term("date", "20120601"); Term endDate = new Term("date", "20120630"); Query rangeQuery = new TermRangeQuery("date", "20120601", "20120630", true, true); //在某个范围内搜索 Query prefixQuery = new PrefixQuery(new Term("content", "Why")); //构造前缀搜索引擎 */ //TopDocs用来封装搜索结果以及ScoreDoc的总数(ScoreDoc: 搜索结果中指向文档的简单指针) TopDocs tDocs = is.search(query, 10000); //一次查询多少个结果 ScoreDoc[] scoreDoc = tDocs.scoreDocs; //获取搜索结果中指向文档的简单指针 //准备高亮器 Formatter formatter = new SimpleHTMLFormatter("<span class=\"highlighter\">", "</span>"); Scorer fragmentScorer = new QueryScorer(query); Highlighter highlighter = new Highlighter(formatter, fragmentScorer); Fragmenter fragmenter = new SimpleFragmenter(100); //高亮范围 highlighter.setTextFragmenter(fragmenter); int numTotalHits = tDocs.totalHits; System.out.println("总共有【" + numTotalHits + "】条结果"); System.out.println(tDocs.scoreDocs.length); //打印ScoreDoc的总数 // int k = tDocs.scoreDocs[0].doc ; //文档内部编号 // Document doc = is.doc(k) ; //更具文档编号取出对应文档 Document doc = is.doc(0); // doc.getField("content"); //获取属性值,与下相同 String content = doc.get("content"); //获取属性值 //如果当前属性值中没有出现关键字, 则返回null String hc = highlighter.getBestFragment(a4, "content", content); System.out.println("hc:" + hc); if(hc == null){ //如果无结果那么返回原文的前50个字符 hc = content.substring(0, Math.min(50,content.length())); // Field contentField=doc.getFieldable("content"); } Field contentField = (Field) doc.getFieldable("content"); contentField.setValue(hc); // doc.getField("content").setValue(hc); TokenStream ts = a4.tokenStream("content", new StringReader(content)); // System.out.println("token: " + ts.getAttribute(String.class).toString()); OffsetAttribute offsetAttribute = ts.getAttribute(OffsetAttribute.class); TermAttribute termAttribute = ts.getAttribute(TermAttribute.class); while (ts.incrementToken()) { int startOffset = offsetAttribute.startOffset(); int endOffset = offsetAttribute.endOffset(); String term = termAttribute.term(); // System.out.println(term); } /* KeepOnlyLastCommitDeletionPolicy kolcdp = new KeepOnlyLastCommitDeletionPolicy(); //删除过时的索引,只保留最后一次提交的索引策略 //下面的句子删除所有的索引 Directory deleteDir = FSDirectory.open(new File(indexPath)); IndexReader indexReader = IndexReader.open(deleteDir); for(int i=0; i<scoreDoc.length; i++){ indexReader.deleteDocument(i); } indexReader.close(); */ } catch (IOException e) { logger.error(e.getMessage()); e.printStackTrace(); } catch (ParseException e) { logger.error(e.getMessage()); e.printStackTrace(); } catch (InvalidTokenOffsetsException e) { logger.error(e.getMessage()); e.printStackTrace(); } } @org.junit.Test public static void testCreateRAMandFS(){ Directory fsDir; try { fsDir = FSDirectory.open(new File(indexPath)); //1.将索引读取到内存中 Directory ramDir = new RAMDirectory(fsDir); //2.填入文档 Document doc = new Document(); Field titleField = new Field("title", new File(filePath).getName(), Store.YES, Index.ANALYZED); String content = new String(SearcherMmseg4j.getBytesFromFile(new File(filePath))); Field contentField = new Field("content", content, Store.YES, Index.ANALYZED); doc.add(titleField); doc.add(contentField); IndexWriterConfig ramiwc = new IndexWriterConfig(matchVersion, analyzer); //默认create_or_append // ramiwc.setOpenMode(IndexWriterConfig.OpenMode.CREATE); //总是重新创建 IndexWriter ramiw = new IndexWriter(ramDir, ramiwc); ramiw.addDocument(doc); ramiw.close(); //3.关闭时,写入到文件 IndexWriterConfig fsiwc = new IndexWriterConfig(matchVersion, analyzer); //默认create_or_append fsiwc.setOpenMode(IndexWriterConfig.OpenMode.CREATE); //总是重新创建 IndexWriter fsiw = new IndexWriter(fsDir, fsiwc); //将内存的索引文件加入到fsiw中 fsiw.addIndexes(ramDir); fsiw.commit(); //优化索引文件(合并索引文件) fsiw.optimize(); fsiw.close(); System.out.println("===执行完毕"); } catch (IOException e) { logger.error(e.getMessage()); e.printStackTrace(); } } /** * http://www.cnblogs.com/java_cSharp/archive/2011/07/17/lucene.html */ public static void main(String[] args) { IndexerMmseg4j.testCreateIndex(); // SearcherMmseg4j.testSearch(); SearcherMmseg4j.testCreateRAMandFS(); } }
mytestfile.txt内容如下:
Why is luanma? 于士博 于时欢 上海 上海滩 北京 北京是首都 北京房价贵 How are you? yes, I am! 1+1=2 2*3=6 @#$%^&
- junit-4.4.jar (159 KB)
- 下载次数: 22
- lucene-analyzers-3.6.0.jar (1.1 MB)
- 下载次数: 46
- lucene-core-3.6.0.jar (1.5 MB)
- 下载次数: 39
- lucene-highlighter-3.6.0.jar (87.1 KB)
- 下载次数: 33
- lucene-memory-3.6.0.jar (29.1 KB)
- 下载次数: 32
- mmseg4j-all-1.8.5.jar (94.7 KB)
- 下载次数: 30
发表评论
-
Spring4Mvc整合Hibernate4框架示例
2016-02-05 11:52 1406今天用NetBeans8.1搭建了一套Spring4MVC+H ... -
Spring4配置properties文件的一点儿细节
2016-02-04 15:40 2809http://repo.spring.io/release/o ... -
JavaWeb发送信息到微信公众平台的企业号
2015-11-01 22:42 3809首先到微信公众平台申请微信企业号: https://qy.we ... -
springmvc+dubbo+zookeeper
2015-09-22 11:34 12043笔者这里使用的是apache- ... -
OracleAS10g安装配置与部署
2015-07-01 20:59 716先到Oracle官方下载OracleAS10的安装包,截图如下 ... -
java和spring使用weblogic数据源配置
2014-10-13 11:29 3047需要weblogic.jar和jrmpclient.jar ... -
一套基本的SpringMvc工程所需要的最基本jar包(pom.xml)
2014-08-19 16:38 1920附件里是pom.xml文件。 -
html的form表单提交得不到参数问题
2014-07-25 16:13 1868今天同事问我他的form表单按submit方式提交,在Java ... -
Spring3Mvc导出PDF的3种形式+导出excel的两种形式(exportAnimal.do)
2014-07-19 22:55 1150附件里SpringMvc导出PDF和Excel的示例代码。 ... -
Java利用中国网建SMS短信通平台发送手机短信
2014-04-26 21:55 2249JAVA发送手机短信,流传有几种方法: (1)使用webser ... -
在Java中发送电子邮件
2014-04-26 18:42 9618要先申请一个网易的126邮箱和一个新浪的com邮箱。 以下程 ... -
cpdetector_1.0.10_binary下载
2014-03-26 20:53 1048附件里是cpdetector_1.0.10_binary.ra ... -
在Java代码中用Axis2调用DotNet语言的WebService程序
2014-02-19 15:19 2588package com.shihuan.ymail.com ... -
SpringMvc多语言配置
2014-01-14 16:01 14440applicationContext.xml文件中加入如下代码 ... -
log4j多级别多输出文件的配置
2013-07-22 21:28 1580以下代码需要log4j-1.2.17.jar的支持。 B ... -
mysql和Oracle在对clob和blob字段的处理
2012-08-25 18:50 30931一、MySQL与Oracle数据库如何处理Clob,Bl ... -
Spring3Mvc+Hibernate整合Axis2发布WebService并配置Quartz调度
2012-08-05 12:54 2224附件里是笔者的源代码,相关的jar包在笔者的abcdef的16 ... -
Mina入门程序
2012-06-02 15:05 1154附件里是Mina的入门程序。 http://mina.apa ... -
让Hibernate的执行语句看见完整参数
2012-04-29 10:09 1049http://www.ibm.com/developerwor ... -
ant打包Web工程
2012-03-18 13:13 3507build.properties文件内容如下: project ...
相关推荐
SpringBoot与Lucene集成案例详解 本文将详细介绍如何将SpringBoot与Lucene集成,以实现站内搜索系统。 Lucene是一个高性能的全文检索引擎,它可以帮助我们快速地检索大量的文本数据。 一、案例介绍 在本案例中,...
《Lucene案例源代码解析》 Lucene是一个高性能、全文本搜索库,广泛应用于各种信息检索系统中。本文将深入探讨“lucene部分案例的源代码”,解析其中的关键技术和应用场景,帮助读者更好地理解和运用Lucene。 一、...
《深入剖析Lucene全文检索案例源码》 在信息技术领域,全文检索技术是搜索引擎的核心,而Lucene作为Java平台上的一个开源全文检索库,被广泛应用于各种搜索应用中。本篇将围绕“lucene全文检索案例源码”展开,深入...
在这个“lucene的小案例”中,我们结合了其他几个框架,如iBatis、Spring和Struts2,构建了一个完整的搜索解决方案。 首先,让我们深入了解Lucene的核心概念: 1. **索引(Index)**:在Lucene中,索引是预处理...
在Android平台上实现全文检索并高亮关键字是一项技术挑战,但通过集成Apache Lucene库,可以有效地解决这个问题。Apache Lucene是一个高性能、可扩展的信息检索库,它为开发人员提供了强大的文本搜索功能。以下是对...
**Lucene 全文检索案例** Lucene 是一个高性能、可扩展的信息检索库,由Apache软件基金会开发。它提供了一个简单但功能强大的API,用于在各种数据源中实现全文搜索。这个案例将深入探讨如何使用Lucene进行全文检索...
**Lucene 3.6 入门案例** Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发。它提供了完整的搜索功能,包括索引、查询、评分等,广泛应用于各种项目和产品中。在这个入门案例中,我们将深入理解如何...
**Lucene项目案例详解** Lucene是一个开源的全文搜索引擎库,由Apache软件基金会维护。它提供了高效的、可扩展的信息检索功能,广泛应用于各种信息管理与搜索系统中。本案例是基于Lucene进行开发的一个实际项目,...
本篇文章将围绕Lucene的核心概念、主要功能、使用方法以及提供的案例进行深入探讨。 ### Lucene核心概念 1. **索引**: Lucene通过构建索引来提高搜索效率。索引过程将文档内容转换为倒排索引结构,其中关键词指向...
本篇文章将围绕"lucene-dependency"这一主题,详细解析Lucene案例中不可或缺的jar包及其作用,帮助读者全面了解如何构建基于Lucene的搜索应用。 首先,我们需要关注的是`commons-io-2.6.jar`。这个库是Apache ...
《深入剖析Lucene搜索案例》 Lucene是一个高性能、全文本搜索库,广泛应用于各种搜索引擎的构建。在“Lucene搜索案例.rar”中,我们可以通过分析包含的文件来理解并学习如何利用Lucene进行实际的搜索应用开发。下面...
《Lucene 4.8学习指南与实战案例分析》 Lucene是一个强大的全文搜索引擎库,由Apache软件基金会开发,主要用于Java环境。版本4.8在功能和性能上都有显著提升,是许多开发者进行文本检索应用开发的重要工具。本文将...
《Lucene 3.1.0案例分析及应用探索》 Lucene,作为一个开源的全文检索库,由Apache软件基金会管理,广泛应用于信息检索、搜索引擎等领域。本文将深入探讨基于Lucene 3.1.0版本的一个实际案例,旨在帮助读者理解和...
本案例"lucene的实际应用案例"主要关注如何利用Lucene来创建和管理索引,以便在大量文本数据中进行高效搜索。 在Lucene中,索引是搜索的核心。索引过程主要包括以下几个步骤: 1. **创建索引**: 首先,你需要读取...
《Lucene案例源码解析——构建模拟百度贴吧的搜索引擎》 Lucene,作为一个开源的全文检索库,被广泛应用于各种信息检索系统中。本案例源码以“模仿百度贴吧”为设计目标,提供了发帖、回帖的功能,是学习和理解...
本篇文章将围绕“lucene3.5全文检索案例lucene+demo”,详细讲解Lucene 3.5的核心概念、关键功能以及如何通过实例进行操作。 一、Lucene 3.5核心概念 1. 文档(Document):Lucene中的最小处理单元,相当于数据库...
本测试案例将深入探讨Lucene 4.7的使用方法和关键功能。 首先,让我们了解Lucene的核心概念。Lucene的主要任务是索引文本数据,以便快速、高效地进行搜索。它将文档内容转化为一系列可搜索的项,这些项称为"术语"。...
《Lucene5源码教程:拼音检索与分词器实战》 在当今的信息化社会,搜索引擎已经成为我们获取信息的重要工具。Lucene,作为Apache软件基金会的开源全文检索库,为开发者提供了强大的文本检索功能。本教程将深入探讨...
《Lucene实战 第2版 》基于Apache的Lucene 3 0 从Lucene核心 Lucene应用 案例分析3个方面详细系统地介绍了Lucene 包括认识Lucene 建立索引 为应用程序添加搜索功能 高级搜索技术 扩展搜索 使用Tika提取文本 Lucene...
总的来说,"Lucene基于java的全文检索案例" 是一个很好的学习资源,通过它你可以深入了解 Lucene 的工作原理和使用方法,从而在自己的项目中实现高效的全文检索功能。这个案例涵盖了索引生命周期管理、查询构造和...