数据检索

用php来实现lucene包来实现全文检索

前提是你 提交于 2019-11-30 02:48:22
因为PHP本身就支持调用外部Java类,所以先用Java写了一个类, 这个类通过调用Lucene的API,实现了两个方法: * public String createIndex(String indexDir_path,String dataDir_path) * public String searchword(String ss,String index_path) 其中createIndex是创建索引方法, 传入了两个参数分别是indexDir_path(索引文件的目录),dataDir_path(被索引的文件目录),返回被索引的文件列表字符串, 另一个是searchword,通过传入的关键字参数(ss)对索引进行检索,index_path就是索引文件的目录。返回所有检索到的文件。 这里是源代码,很简单,大家可以参考一下: TxtFileIndexer.java 而PHP程序就调用这两个方法,实现对Lucene的调用,从而达到全文检索的目的。 PHP的调用方法如下: 先创建一个我们写的TxtFileIndexer类的实例, $tf = new Java('TestLucene.TxtFileIndexer'); 然后就按正常PHP类的调用方法的方式进行调用,首先创建索引: $data_path = "F:/test/php_lucene/htdocs/data/manual

数据检索|文献检索|事实检索|yandex|Title vs topic|检索技术|检索技巧|

本秂侑毒 提交于 2019-11-30 01:34:31
信息检索: 信息检索原理是,将书写不规范的原始数据先存储,再通过归纳化 or 标准化手段进行拆分,便于用户搜索。 信息检索类型可依据数据内容进行分类,文献检索是通过输入关键字进入搜索引擎,搜索仅找到含有关键字符的文字,最后选择哪些文献由学者本身确定。数据检索是在相应数据库中直接找到准确数据,该检索的结果是数值。事实检索是在百科全书数据库中进行找寻事实记录, eg 历史依据。 检索工具主要是网络数据库 eg : yandex.com 检索方法的选择基于研究者自身需要。基于时间序列,需要了解某学科的发展历史,可以使用顺查法。因为新兴学科( eg 区块链)前期的记录非常少,所以采用倒查法。了解某时期内学科发展,可使用抽查法抽取某一时段。追溯法是由文章主要内容到文章参考文献 A ,再由 A 找到 A 的参考文献 B ,现在文献数据库可以找到 2 层。循环法是综合以上方法。 检索途径分为外部途径和内部途径。 外部途径就是基于字面意思表达,单纯进行字符串匹配得到的结果。其中,题名限制是找 title 中含有关键字的文献,特别的是 Title 限制与 topic 限制不同,基于 topic 限制时,字符串搜索区域是 title+abstract+keyword 。责任者途径是基于学者相关信息找文献。号码途径较准,因为搜索是基于编码,不会重复或者错乱。常见的编码有 DOI , ISSN 和

Lucene实现全文检索的流程

倾然丶 夕夏残阳落幕 提交于 2019-11-29 23:24:46
索引和搜索流程图 绿色表示索引过程,对要搜索的原始内容进行索引构建一个索引库,索引过程包括: 确定原始内容(即要搜索的内容)-->采集文档-->创建文档-->分析文档-->索引文档 红色表示搜索过程,从索引库中搜索内容,搜索过程包括: 用户通过搜索界面-->创建查询-->执行搜索,从索引库搜索-->渲染搜索结果 创建索引 对文档索引的过程,将用户要搜索的文档内容进行索引,索引存储在索引库(index)中。 这里我们要搜索的文档是磁盘上的文本文件,根据案例描述:凡是文件名或文件内容包括关键字的文件都要找出来,这里要对文件名和文件内容创建索引。 1)获得原始文档 原始文档 是指要索引和搜索的内容。原始内容包括互联网上的网页、数据库中的数据、磁盘上的文件等。 2)创建文档对象 获取原始内容的目的是为了索引,在索引前需要将原始内容创建成文档( Document ),文档中包括一个一个的域( Field ),域中存储内容。 这里我们可以将磁盘上的一个文件当成一个 document , Documen t中包括一些 Field ( file_name 文件名称、 file_path 文件路径、 file_size 文件大小、 file_content 文件内容),如下图: 注意:每个 Document 可以有多个 Field ,不同的 Document 可以有不同的 Field ,同一个

Lucene索引库的维护

别等时光非礼了梦想. 提交于 2019-11-29 23:24:27
索引库的添加 Field域的属性 Field类 数据类型 Analyzed是否分析 Indexed是否索引 Stored是否存储 说明 StringField(FieldName, FieldValue,Store.YES)) 字符串 N Y Y或N 这个Field用来构建一个字符串Field,但是不会进行分析,会将整个串存储在索引中,比如(订单号,姓名等)是否存储在文档中用Store.YES或Store.NO决定 LongPoint(String name, long... point) Long型 Y Y N 可以使用LongPoint、IntPoint等类型存储数值类型的数据。让数值类型可以进行索引。但是不能存储数据,如果想存储数据还需要使用StoredField。 StoredField(FieldName, FieldValue) 重载方法,支持多种类型 N N Y 这个Field用来构建不同类型Field不分析,不索引,但要Field存储在文档中 TextField(FieldName, FieldValue, Store.NO)或TextField(FieldName, reader) 字符串或流 Y Y Y或N 如果是一个Reader, lucene猜测内容比较多,会采用Unstored的策略. 是否分析 :是否对域的内容进行分词处理。前提是我们要对域的内容进行查询

Lucene4.7 索引和检索的常用API(二)

一世执手 提交于 2019-11-29 22:24:13
前面几篇笔者已经把Lucene的最基本的入门,介绍完了,本篇就对Lucene基本的知识做一个总结,以便于加深对Lucene基本API组件的理解。 为了方便对比学习,下面给出表格数据 索引期间使用的API组件 检索期间使用的API组件 IndexWriter IndexReader IndexWriterConfig IndexSearcher Directory Directory Analyzer QueryParser或者Query子类 Document TopDocs Field ScoreDoc--Term 下面笔者就对上图组件一一剖析下 首页要介绍的就索引期间的各个类 1,IndexWriter是索引过程中的核心类,主要负责创建索引或者打开已有索引,提供对索引的 添加,删除,修改等操作 2,IndexWriterConfig这个API在低版本的Lucene中是没有此配置类的,这个类也比较重要,使用此类则需要在其构造方法中传入2个参数,第一个参数是Lucene当前的版本号,第二个是索引是使用的分词器,除了这个我们最常用的功能,里面还提供了大量工具方法,例如,设置内存里缓冲大小,设置文档数据批量提交时大小,获取线程状态,设置创建模式,以及是否开启复合索引的等等一系列,可以对索引做一些基本的配置优化等信息。 3,Directory这个类代表了Lucene索引的存放位置

ElasticSearch入门篇Ⅰ --- 核心知识概括

徘徊边缘 提交于 2019-11-29 17:41:27
C01.什么是Elasticsearch 1.什么是搜索 垂直搜索(站内搜索) 互联网的搜索:电商网站,招聘网站,各种app IT系统的搜索:OA软件,办公自动化软件,会议管理,员工管理,后台管理系 2.如果用数据库做搜索会怎么样 数据库在做某些搜索(模糊搜索)时,效率会很差,是不太靠谱的。 3. 什么是全文检索? 数据库搜索的弊端: 数据库里有100万条数据,模糊匹配要扫描100万次,每次扫描都要匹配文本所有字符,还无法拆解开来检索。 全文检索 :会将100万条数据拆分开来,建立 倒排索引 ,搜索的时也许第一次就可以搜素到对应的数据,可能是100次,1000次,上述过程就叫全文检索。 Lucene: 就是一个jar包,里面包含各种建立倒排索引,以及搜索的代码,包括各种算法。我们Java开发时,引入lucene的jar进行开发就可以了。使用lucene,我们可以去将已有的数据建立索引,lucene会在本地磁盘上面给我们组织索引的数据结构。 lucene的弊端 :数据量大,一台机器难以放下,需要多台机器,可用性,可维护性差。 4.什么是Elasticsearch 自动维护数据的分布到多个节点的索引的建立,还有搜索请求分不到多个节点执行 自动维护数据的冗余副本,保证说一些机器宕机了,不会丢失任何的数据 分装了更多的高级功能,以给我们提供更多高级的支持,让我们快速地开发应用

利用Lucene创建索引

我们两清 提交于 2019-11-29 08:08:07
利用Lucene的IndexWriter建立索引(详解) 需要lucene-analyzers-common-4.5.1.jar以上 /* * 建立索引,然后把建立后的文档添加到索引中去 * 提示先使用Document和Field把Field加入到Document中去, * 接着把Document建立成为一个索引 * */ package comThree; import java.io.IOException; 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; public class BookIndex{ //创建索引的目录 private String INDEX_PATH = "E:\\Lucene项目\\索引目录"; Document bookdoc1 = null; public BookIndex(){ bookdoc1 = new Document(); System.out.println("开始创建书的Field字段---------->

大规模数据如何检索?

倖福魔咒の 提交于 2019-11-29 07:07:08
思考:大规模数据如何检索? 如:当系统数据量上了10亿、100亿条的时候,我们在做系统架构的时候通常会从以下角度去考虑问题: 1)用什么数据库好?(mysql、sybase、oracle、达梦、神通、mongodb、hbase…) 2)如何解决单点故障;(lvs、F5、A10、Zookeep、MQ) 3)如何保证数据安全性;(热备、冷备、异地多活) 4)如何解决检索难题;(数据库代理中间件:mysql-proxy、Cobar、MaxScale等;) 5)如何解决统计分析问题;(离线、近实时) 来源: https://www.cnblogs.com/zeenzhou/p/11462649.html

(转载)图像检索:基于内容的图像检索技术

Deadly 提交于 2019-11-28 12:28:21
图像检索:基于内容的图像检索技术 背景与意义 在Web2.0时代,尤其是随着Flickr、Facebook等社交网站的流行,图像、视频、音频、文本等异构数据每天都在以惊人的速度增长。例如, Facebook注册用户超过10亿,每月上传超过10亿的图片;Flickr图片社交网站2015年用户上传图片数目达 7.28亿 ,平均每天用户上传约200万的图片;中国最大的电子商务系统淘宝网的后端系统上保存着286亿多张图片。针对这些包含丰富视觉信息的海量图片,如何在这些浩瀚的图像库中方便、快速、准确地查询并检索到用户所需的或感兴趣的图像,成为多媒体信息检索领域研究的热点。基于内容的图像检索方法充分发挥了计算机长于处理重复任务的优势,将人们从需要耗费大量人力、物力和财力的人工标注中解放出来。经过十来来的发展,基于内容的图像检索技术已广泛应用于搜索引擎、电子商务、医学、纺织业、皮革业等生活的方方面面。 图像检索按描述图像内容方式的不同可以分为两类,一类是基于文本的图像检索(TBIR, Text Based Image Retrieval),另一类是基于内容的图像检索(CBIR, Content Based Image Retrieval)。 基于文本的图像检索方法始于上世纪70年代,它利用文本标注的方式对图像中的内容进行描述,从而为每幅图像形成描述这幅图像内容的关键词,比如图像中的物体、场景等

MySQL检索数据-SELECT查询语句

假装没事ソ 提交于 2019-11-28 11:05:13
students表 1.检索单个列 SELECT name FROM students 返回结果: 2. 检索多个列 --用逗号分隔列名 SELECT name , age , class FROM students 返回结果: 3. 检索所有列 --使用星号*通配符 SELECT * FROM students 返回结果: 4. 检索不同的行(返回结果去重) --使用DISTINCT SELECT DISTINCT class FROM students 返回结果: 4. 限制结果 --使用LIMIT子句,限制结果显示从第0行开始的1条数据 SELECT * FROM students LIMIT 0 , 1 --也可以写作LIMIT 1或LIMIT 1 OFFSET 0 返回结果: 来源: https://blog.csdn.net/Even_better/article/details/100055595