精华内容
下载资源
问答
  • java全文检索

    2012-10-23 08:46:27
    使用java技术的全文检索,企业级应用,很不错啊,哈哈哈哈
  • Java全文检索

    2018-11-19 16:08:50
    本项目使用了 Lucene 的一些技术,利用 Lucene 建立索引并在该索引上进行搜索。希望本项目能够为学习 Lucene ,以及为做全文检索的读者、开发者提供帮助。
  • Lucene-Java全文搜索引擎
  • 1.>全文检索的概念 先创建索引然后查询索引的过程叫做全文检索 索引一次创建可以多次使用,表现为每次查询速度都很快 2.>全文检索的应用场景 1)....只要有搜索的地方都可以使用全文检索技术
  • java全文搜索lucene-3.0.0-src+lib.zip
  • 调用lucene实现建索引,全文搜索的完整简单java源码例子
  • Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。 此篇文章仅为自己工作记录备用,不具有任何参考价值,请见谅. 如对...

    Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。

     

    此篇文章仅为自己工作记录备用,不具有任何参考价值,请见谅. 如对Lucene有兴趣,请参看下篇文章及自行搜索更多参考资料.

    http://www.chedong.com/tech/lucene.html 

    展开全文
  • java全文搜索引擎 Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便
  • 随着数据库技术和数据库管理系统的广泛应用,全球范围内数据库中存储的数据量急剧增大,有些面向科学研究数据库的数据量非常惊人,庞大的数据靠人工处理是非常困难...快速检索出所需数据,从而帮助更好的进行决策和研究
  • java 全文搜索网站

    2007-09-11 10:35:36
    这个是复旦精华区的bbs搜索网站系统,分为2个系统,一个爬网页并建立索引,一个jsp web端。 程序中的不少部分用于解析页面。建立索引部分调整了默认参数。效率还可以,对于很大数据量(>10g)可能就比较慢了
  • Lucene 是apache软件基金会一个开放源代码的全文检索引擎工具包,是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。 Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的...

    Lucene 是apache软件基金会一个开放源代码的全文检索引擎工具包,是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。 Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。

    Lucene最初是由Doug Cutting所撰写的,是一位资深全文索引/检索专家,曾经是V-Twin搜索引擎的主要开发者,后来在Excite担任高级系统架构设计师,目前从事 于一些INTERNET底层架构的研究。他贡献出Lucene的目标是为各种中小型应用程式加入全文检索功能。

    网站http://www.oschina.net/ 使用的就是 Lucene 实现全文搜索。

    Lucene在线教程:http://clucene.org/dev/75

    Lucene在线JAVADOC:http://www.ostools.net/apidocs/apidoc?api=lucene-3.6.0

    展开全文
  • } } 注:这里读取pdf需要用到Spire.Pdf.jar 三、测试类,这里增删改查调用的工具类参考上一篇Elasticsearch入门之(三)使用java进行增删改查 package springboot.elasticsearch; import ...

    一、这里我的思路是,在上传文件时候把数据库对应id存到Elasticsearch对应索引类型的id,然后利用工具类把pdf、word、excel文件内容存到Elasticsearch的id对应json里,返回所有文件id的list

    二、这里我封装了一个读取pdf、word、excel文件工具类

    package springboot.elasticsearch;
    
    import com.spire.pdf.PdfDocument;
    import com.spire.pdf.PdfPageBase;
    import org.apache.poi.POIXMLDocument;
    import org.apache.poi.POIXMLTextExtractor;
    import org.apache.poi.hssf.extractor.ExcelExtractor;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.hwpf.extractor.WordExtractor;
    import org.apache.poi.openxml4j.opc.OPCPackage;
    import org.apache.poi.poifs.filesystem.POIFSFileSystem;
    import org.apache.poi.xssf.extractor.XSSFExcelExtractor;
    import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    
    public class ReadUtil {
    
    	/**
    	 * JSON字符串特殊字符处理
    	 * @param s
    	 * @return String
    	 */
    	public static String stringJson(String s) {
    		StringBuffer sb = new StringBuffer();
    		for (int i = 0; i < s.length(); i++) {
    			char c = s.charAt(i);
    			switch (c) {
    				case '\"':
    					sb.append("\\\"");
    					break;
    				case '\\':
    					sb.append("\\\\");
    					break;
    				case '/':
    					sb.append("\\/");
    					break;
    				case '\b':
    					sb.append("\\b");
    					break;
    				case '\f':
    					sb.append("\\f");
    					break;
    				case '\n':
    					sb.append("\\n");
    					break;
    				case '\r':
    					sb.append("\\r");
    					break;
    				case '\t':
    					sb.append("\\t");
    					break;
    				default:
    					sb.append(c);
    			}
    		}
    		return sb.toString();
    	}
    
    	/**
    	 * word读取工具
    	 * @param path
    	 * @return
    	 */
    	public static String readWord(String path) {
    		String buffer = "";
    		try {
    			if (path.endsWith(".doc")) {
    				InputStream is = new FileInputStream(new File(path));
    				WordExtractor ex = new WordExtractor(is);
    				buffer = ex.getText();
    				ex.close();
    			} else if (path.endsWith(".docx")) {
    				OPCPackage opcPackage = POIXMLDocument.openPackage(path);
    				POIXMLTextExtractor extractor = new XWPFWordExtractor(opcPackage);
    				buffer = extractor.getText();
    				extractor.close();
    			} else {
    				System.out.println("此文件不是word文件!");
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return stringJson(buffer);
    	}
    
    	/**
    	 * excel读取工具
    	 * @param path
    	 * @return
    	 */
    	public static String readExcel(String path) {
    		String buffer = "";
    		try {
    			InputStream is = new FileInputStream(path);
    			if (path.endsWith(".xls")) {
    				HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(is));
    				ExcelExtractor extractor = new ExcelExtractor(wb);
    				extractor.setIncludeSheetNames(true);
    				extractor.setFormulasNotResults(true);
    				extractor.setIncludeCellComments(true);
    				buffer = extractor.getText();
    			} else if (path.endsWith(".xlsx")) {
    				OPCPackage opcPackage = POIXMLDocument.openPackage(path);
    				POIXMLTextExtractor extractor = new XSSFExcelExtractor(opcPackage);
    				buffer = extractor.getText();
    				extractor.close();
    			} else {
    				System.out.println("此文件不是excel文件!");
    				return "";
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return stringJson(buffer);
    	}
    
    	/**
    	 * pdf读取工具
    	 * @param path
    	 * @return
    	 */
    	public static String readPdf(String path) {
    		String buffer = "";
    		try {
    			//创建PdfDocument实例
    			PdfDocument doc= new PdfDocument();
    			//加载PDF文件
    			doc.loadFromFile(path);
    			PdfPageBase page = null;
    			//遍历PDF页面,获取文本
    			for (int i = 0; i < doc.getPages().getCount(); i++) {
    				page = doc.getPages().get(i);
    				buffer += page.extractText(true);
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return stringJson(buffer);
    	}
    
    	/**
    	 * 根据不同类型,获取内容
    	 * @param path
    	 * @return
    	 */
    	public static String readContent(String path) {
    		String str = "";
    		String[] split = path.split("\\.");
    		String suffix = split[split.length - 1];
    		switch (suffix) {
    			case "doc":
    				str = readWord(path);
    				break;
    			case "docx":
    				str = readWord(path);
    				break;
    			case "xls":
    				str = readExcel(path);
    				break;
    			case "xlsx":
    				str = readExcel(path);
    				break;
    			case "pdf":
    				str = readPdf(path);
    				break;
    			default:
    				break;
    		}
    		return str;
    	}
    
    	public static void main(String[] args) {
    //		String content = readWord("C:\\Users\\dell\\Desktop\\cs123.doc");
    //		String content = readWord("C:\\Users\\dell\\Desktop\\cs.docx");
    //		String content = readExcel("C:\\Users\\dell\\Desktop\\cs1.xls");
    //		String content = readExcel("C:\\Users\\dell\\Desktop\\cs2.xlsx");
    		String content = readPdf("C:\\Users\\dell\\Desktop\\cs3.pdf");
    		System.out.println("content===="+content);
    	}
    }
    

    注:这里读取pdf需要用到Spire.Pdf.jar

    三、测试类,这里增删改查调用的工具类参考上一篇Elasticsearch入门之(三)使用java进行增删改查

    package springboot.elasticsearch;
    
    import com.alibaba.fastjson.JSON;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.List;
    import java.util.Map;
    import java.util.UUID;
    
    public class Elasticsearch {
    	public static void main(String[] args) {
    		try {
    			//判断索引是否存在,不存在则创建
    			if (!ElasticsearchUtil.checkIndexExist("cs")) {
    				ElasticsearchUtil.createIndex("cs");
    			}
    			String uuid = UUID.randomUUID().toString().replaceAll("-","");
    			String path = "C:\\Users\\dell\\Desktop\\";
    //			String file_name = "cs123.doc";
    //			String file_name = "cs.docx";
    //			String file_name = "cs1.xls";
    //			String file_name = "cs2.xlsx";
    			String file_name = "cs3.pdf";
    			String[] split = file_name.split("\\.");
    			String suffix = split[split.length - 1];
    			String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
    			String content = ReadUtil.readContent(path + file_name);
    			String jsonObj = "{" +
    					"\"file_name\":\"" + file_name + "\"," +
    					"\"suffix\":\"" + suffix + "\"," +
    					"\"time\":\"" + time + "\"," +
    					"\"content\":\"" + content + "\"" +
    					"}";
    //			ElasticsearchUtil.insert("cs", "doc", uuid, JSON.parseObject(jsonObj));
    //			ElasticsearchUtil.update("cs", "doc", "3", JSON.parseObject(jsonObj));
    //			ElasticsearchUtil.delete("cs", "doc", "2");
    //			Map<String, Object> source = ElasticsearchUtil.getJson("cs", "doc", "3");
    //			System.out.println(source.get("user"));
    			List<String> list = ElasticsearchUtil.search("cs", "doc", "一个");
    			System.out.println(list);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}finally {
    			ElasticsearchUtil.close();
    		}
    	}
    
    }
    

    四、效果如下

    展开全文
  • Lucene基于Java全文检索引擎简介Lucene基于Java全文检索引擎简介
  • Lucene是一个开放源代码的全文检索引擎工具包, 提供了完整的查询引擎和索引引擎, 部分文本分析引擎。Solr是一个高性能,基于Lucene的全文搜索服务器。提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展...
  • 本篇文章主要介绍了Java实现AC自动机全文检索示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • Java实现全文检索-Solr

    2019-11-28 16:47:08
    Java实现全文检索-SolrSolr是什么?Solr Vs Lucene搭建Solr服务器(Mac系统)Solr搭载IKAnalyer分词器 Solr是什么? Solr是一个基于全文检索的企业级应用服务器;全文检索,可以通过分词来检索数据;应用服务器:它...

    Solr是什么?

    Solr是一个基于全文检索的企业级应用服务器;全文检索,可以通过分词来检索数据;应用服务器:它是单独的服务。

    Solr Vs Lucene

    同为Apache下的应用,Lucene与Solr的区别:

    • Lucene是一个工具包(jar) ,不能单独运行,需要导入到java代码中。
    • Solr它是基于Lucene的全文搜索服务器,可以独立运行在Tomcat容器中或者Jetty容器中,通过http协议,以接口的方式对外提供服务,java代码专注于业务的处理就行。

    搭建Solr服务器(Mac系统)

    本文使用Tomcat容器来搭建Solr服务器,Windows系统应该与Mac系统类似的操作

    1. 首先得下载Apache Tomcat包以及Solr包,这里本人下载的是Tomcat 7.0.93 以及Solr 4.10.3
      Tomcat下载路径:
      https://tomcat.apache.org/
      Solr下载路径:
      http://archive.apache.org/dist/lucene/solr/
    2. 在电脑的任意一个盘建一个文件夹起名为 solr ,把你准备好的Tomcat和solr都复制或者直接拖到刚创建的solr文件夹下
    3. 把你准备好的solr(solr-4.10.3/example/webapps/solr.war)版本里面的war包复制到Tomcat webapps下面,并解压到webapps里面的solr文件夹(自己创建)
      在这里插入图片描述
    4. 把solr-4.10.3/example/lib/ext里面的5个jar包复制到tomcat7.0.93/webapps/solr/WEB-INF/lib里面
      在这里插入图片描述
    5. 创建一个solrhome(存放所有配置文件的一个文件夹)
    6. 把solr-4.10.3/example/solr文件夹的内容都复制到solrhome里面
      在这里插入图片描述
      上图中“collection1”是一个SolrCore(Solr实例)
      说明:
      collection1:叫做一个Solr运行实例SolrCore,SolrCore名称不固定,一个solr运行实例对外单独提供索引和搜索接口。
      solrHome中可以创建多个solr运行实例SolrCore。
      一个solr的运行实例对应一个索引目录。
      conf是SolrCore的配置文件目录 。
      data目录存放索引文件需要创建
    7. 告诉solr服务器配置文件也是solrhome的位置,修改web.xml(tomcat/webapps/solr/WEB-INF/web.xml)大概在40行左右
    <env-entry>
    	   <env-entry-name>solr/home</env-entry-name>
    	   <env-entry-value>/Users/psy/solr/solrhome</env-entry-value>
    	   <env-entry-type>java.lang.String</env-entry-type>
    	</env-entry>
    

    最后一步,启动tomcat
    mac: 先cd 到tomcat里面的bin路径下 cd /Users/psy/solr/apache-tomcat-7.0.79/bin;开启tomcat:./startup.sh
    Windows:直接执行start.bat文件即可;访问:http://localhost:8080/solr/
    在这里插入图片描述
    服务器到此就搭载完毕了!!!
    solr搭建过程中控制台报错: Can’t find (or read) directory to add to classloader: …/…/…/contrib/extraction/li
    推荐使用第二种,简单方便

    https://blog.csdn.net/qq_34696886/article/details/77461427

    Solr搭载IKAnalyer分词器

    IKAnalalyer下载路径:

    https://code.google.com/archive/p/ik-analyzer/downloads
    在这里插入图片描述

    1. 选择下载IK Analyzer
      2012FF_hf1.zip
      ,注:下过IKAnalyzer2012_u6.zipSolr4.10.3会和这个版本不兼容
      下载之后解压,PDF有详细说明!!如图所示
      在这里插入图片描述

    2. 将解压后的IKAnalyzer.cfg.xmlstopword.dic复制到之前配置下solr/solrhome/collection1/conf

    3. 将解压后的IKAnalyzer2012FF_u1.jar复制到solr/apache-tomcat-7.0.93/webapps/solr/WEB-INF/lib

    4. 修改solr/solrhome/collection1/conf/schema.xml,添加以下内容

      <!-- IKAnalyzer -->
      <fieldType name="text_ik" class="solr.TextField">
        <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
      </fieldType>
      
      <field name="name1" type="text_ik" indexed="true" stored="true" multiValued="false" />
      
    5. 重启Tomcat服务,再次访问http://localhost:8080/solr
      name1即为后面添加配置项的field namename1即为后面添加配置项的field name
      在这里插入图片描述

    展开全文
  • 全文检索的实现:Luene全文索引和数据库索引的比较 中文切分词机制简介:基于词库和自动切分词算法的比较 具体的安装和使用简介:系统结构介绍和演示 Hacking Lucene:简化的查询分析器,删除的实现,定制的排序,...
  • 全文检索的流程分为两大流程:索引创建、搜索索引: 索引创建:将现实世界中所有的结构化和非结构化数据提取信息,创建索引的过程。 搜索索引:就是得到用户的查询请求,搜索创建的索引,然后返回结果的过程。 ...
  • 一、什么是全文检索 什么叫做全文检索呢?这要从我们生活中的数据说起。 我们生活中的数据总体分为两种:结构化数据和非结构化数据。 结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。 非结构化数据:...
  • Java 语言全文检索技术

    千次阅读 2018-08-11 11:01:29
    Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎...
  • Java全文检索实现

    热门讨论 2013-01-10 16:21:13
    该文档描述了Lunene的详细介绍,应用及实现的方法列子。
  • 基于java全文检索引擎的简介

    千次阅读 2014-06-07 20:48:44
    1、基于java全文检索引擎的简介  Lucene不是一个完整的全文检索应用,而是一个java语言写的全文检索引擎工具包,他可以很方便的嵌入到各种应用系统中实现信息的全文检索功能。 2、全文检索实现机制  Lucene的...
  • Lucene:基于Java全文检索引擎简介.pdf
  • Lucene:基于Java全文检索引擎简介.rar
  • lucene基于java全文检索,实现了索引添加,删除,修改,高亮显示查询
  • Lucene全文检索框架+Solr搜索引擎(2018版.Java)Lucene实战应用
  • 2. 全文检索的实现:Luene全文索引和数据库索引的比较 3. 中文切分词机制简介:基于词库和自动切分词算法的比较 4. 具体的安装和使用简介:系统结构介绍和演示 5. Hacking Lucene:简化的查询分析器,删除的实现,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 902,726
精华内容 361,090
关键字:

java全文检索

java 订阅