索引

mongodb指南(翻译)(二十) - developer zone - 索引(四)地理信息索引

吃可爱长大的小学妹 提交于 2020-01-31 10:36:05
v1.4+ MongoDB支持2维地理信息索引。它被设计用来进行脑海中基于位置的查询,诸如“查找距离我的位置最近的N个场所”。它还可以高效的处理额外的查询条件,比如“查找距离我的位置最近的N个博物馆”。 为了可以使用这种索引,你需要在你的对象中设置一个字段,该字段可以是一个子对象或者前两个元素为x,y坐标的数组(或者y,x-只要一致就行;为了确保一致性,推荐在你的客户端代码中使用保持排序的词典/hashes。)。 一些例子: { loc : [ 50 , 30 ] } //SUGGESTED OPTION{ loc : { x : 50 , y : 30 } }{ loc : { foo : 50 , y : 30 } }{ loc : { lon : 40.739037, lat: 73.992964 } } 创建该索引 db.places.ensureIndex( { loc : "2d" } ) 默认情况下,该索引假定你在索引经度/维度,并且这些值的范围是[-180,180]. 如果你在索引其他东西,你可以指定一些选项: db.places.ensureIndex( { loc : "2d" } , { min : -500 , max : 500 } ) 这会对索引扩容来存储-500到500范围的值。地理信息边界搜索目前是限制在长方形和圆形之内不含边界以外。你不能插入边界

lucent,solr,ES比较

随声附和 提交于 2020-01-31 07:57:02
| 0 什么是全文搜索 什么是全文搜索引擎? 百度百科中的定义 : 全文搜索引擎是目前广泛应用的主流搜索引擎。它的工作原理是计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。 从定义中我们已经可以大致了解全文检索的思路了,为了更详细的说明,我们先从生活中的数据说起。 我们生活中的数据总体分为两种: 结构化数据 和 非结构化数据 。 结构化数据 : 指具有固定格式或有限长度的数据,如数据库,元数据等。 非结构化数据 : 非结构化数据又可称为全文数据,指不定长或无固定格式的数据,如邮件,word文档等。 当然有的地方还会有第三种: 半结构化数据 ,如XML,HTML等,当根据需要可按结构化数据来处理,也可抽取出纯文本按非结构化数据来处理。 根据两种数据分类,搜索也相应的分为两种:结构化数据搜索和非结构化数据搜索。 对于结构化数据,我们一般都是可以通过关系型数据库(mysql,oracle等)的 table 的方式存储和搜索,也可以建立索引。 对于非结构化数据,也即对全文数据的搜索主要有两种方法: 顺序扫描法 , 全文检索 。 顺序扫描 :通过文字名称也可了解到它的大概搜索方式

MySQL存储引擎

ぐ巨炮叔叔 提交于 2020-01-31 04:45:50
MySQL存储引擎 存储引擎 MySQL存储引擎 存储引擎   MySQL数据库在实际的工作中分为了语句分析层和存储引擎层,其中语句分析层主要负责与客户端完成连接并且事先分析出SQL语句的内容和功能,存储引擎层则主要负责接收来自语句分析层的分析结果,完成相应的数据输入输出和文件操作,即如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。 MySQL存储引擎 (1)MyISAM存储引擎   不支持事务、也不支持外键,优势是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本上可以用这个引擎来创建表。支持3种不同的存储格式,分别是:静态表、动态表、压缩表 静态表:表中的字段都是非变长字段,每个记录都是固定长度的,优点存储非常迅速,容易缓存,出现故障容易恢复;缺点是占用的空间通常比动态表多(因为存储时会按照列的宽度定义补足空格) 动态表:记录不是固定长度的,这样存储的优点是占用的空间相对较少;缺点:频繁的更新、删除数据容易产生碎片,需要定期执行OPTIMIZE TABLE或者myisamchk -r命令来改善性能 压缩表:因为每个记录是被单独压缩的,所以只有非常小的访问开支 (2)InnoDB存储引擎   该存储引擎提供了具有提交

搜索引擎选择: Elasticsearch与Solr

心不动则不痛 提交于 2020-01-31 02:04:24
Elasticsearch简介 * Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。 它可以用于全文搜索,结构化搜索以及分析,当然你也可以将这三者进行组合。 Elasticsearch是一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎,可以说Lucene是当今最先进,最高效的全功能开源搜索引擎框架。 但是Lucene只是一个框架,要充分利用它的功能,需要使用JAVA,并且在程序中集成Lucene。需要很多的学习了解,才能明白它是如何运行的,Lucene确实非常复杂。 Elasticsearch使用Lucene作为内部引擎,但是在使用它做全文搜索时,只需要使用统一开发好的API即可,而不需要了解其背后复杂的Lucene的运行原理。 当然Elasticsearch并不仅仅是Lucene这么简单,它不但包括了全文搜索功能,还可以进行以下工作: 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。 实时分析的分布式搜索引擎。 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。 这么多的功能被集成到一台服务器上,你可以轻松地通过客户端或者任何你喜欢的程序语言与ES的RESTful API进行交流。 Elasticsearch的上手是非常简单的。它附带了很多非常合理的默认值

Julia ---- String 字符串类型常用操作

让人想犯罪 __ 提交于 2020-01-31 00:22:16
1、字符类型String的一些特点 Julia Strings 有几个值得注意的高级特征: (1)Julia中用于字符串(和字符串文本)处理的的内置类型是string。它使用UTF-8编码,并支持所有的的Unicode字符。(提供了transcode()函数,用于转换为其他程序的Unicode编码或从其他程序的Unicode编码转换为自己的Unicode编码。) (2)所有字符串类型都是抽象类型abstract string的子类型,其他外部包也会定义额外的抽象字符串子类型(例如,用于其他编码)。如果定义的函数需要字符串参数,则应将参数类型声明为AbstractString,以便接受其他的字符串类型。 (3)像C和Java一样,但是与大多数动态语言不同,Julia有一个表示单个字符的一级类型,称为Char。这只是一种特殊的32位原语类型,其数值表示Unicode编码值。 (4)与Java一样,Julia的字符串是不可变的:AbstractString对象的值不能更改。要使用不同的字符串,可以从其他字符串的部分构造新字符串。 (5)从概念上讲,字符串在存储上类似 字符数组 ,所以它每一位的单个元素都是可以提取的:对于某些索引值,如果不返回字符值,就会引发异常。它允许通过编码表示的字节索引而不是通过由字符索引来高效地对字符串进行索引

solr和ElasticSearch(ES)的区别?

风流意气都作罢 提交于 2020-01-31 00:13:56
Solr2004年诞生 ElasticSearch 2010年诞生 ES更新 ElasticSearch简介:   ElasticSearch是一个实时的分布式的搜索引擎和分析引擎.它可以帮助你用前所未有的速度去处理大规模数据.   它可以用于全文检索,结构化以及分析.当然你也可以将这三者进行组合.   ElasticSearch是一个建立在全文搜索引擎Apache Lucene基础上的搜索引擎,可以说Lucene是当今最先进,最高效的全共鞥开源搜索引擎框架.   但是Lucene只是一个框架,要充分利用它的功能,需要使用JAVA,并且在程序中集成Lucene.需要很多的学习了解,才能明白它是如何运行的,Lucene确实非常复杂.   ElasticSearch使用Lucene作为内部引擎,但是在使用它做全文检索时,只需要使用统一开发好的API即可,而不需要了解其背后复杂的Lucene的运行原理.   当然Elasticsearch并不仅仅是Lucene这么简单,它不但包括了全文搜索功能,还可以进行一下工作:     分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索.     实时分析的分布式搜索引擎.     可以拓展到上百台服务器上,处理PB级别的结构化和非结构化数据 这么多的功能都被继承到一台服务器上

关系型数据库MySql-模糊搜索优化(like %abc%):全文搜索引擎技术选型

℡╲_俬逩灬. 提交于 2020-01-30 23:50:23
1.阿里云OpenSearch 阿里云开放搜索OpenSearch是一款阿里巴巴自主研发的大规模分布式搜索引擎平台,该平台承载了淘宝、天猫、1688、神马搜索、口碑、菜鸟等搜索业务,通过OpenSearch云服务的方式,将阿里巴巴成熟的搜索技术共享给广大开发者。 https://help.aliyun.com/document_detail/29119.html 2.Lucene Lucene 是一个 JAVA 搜索类库,它本身并不是一个完整的解决方案,需要额外的开发工作。 优点:成熟的解决方案,有很多的成功案例。apache 顶级项目,正在持续快速的进步。庞大而活跃的开发社区,大量的开发人员。它只是一个类库,有足够的定制和优化空间:经过简单定制,就可以满足绝大部分常见的需求;经过优化,可以支持 10亿+ 量级的搜索。 缺点:需要额外的开发工作。所有的扩展,分布式,可靠性等都需要自己实现;非实时,从建索引到可以搜索中间有一个时间延迟,而当前的“近实时”(Lucene Near Real Time search)搜索方案的可扩展性有待进一步完善 3.IndexTank 基于 Lucene 的一系列解决方案,包括 准实时搜索 zoie ,facet 搜索实现 bobo ,机器学习算法 decomposer ,摘要存储库 krati ,数据库模式包装 sensei 等等 优点

Python数据类型-4 列表

元气小坏坏 提交于 2020-01-30 19:44:51
列表 列表是Python中最基本也是最常用的数据结构之一。列表中的每个元素都被分配一个数字作为索引,用来表示该元素在列表内所排在的位置。第一个元素的索引是0,第二个索引是1,依此类推。 Python的列表是一个有序可重复的元素集合,可嵌套、迭代、修改、分片、追加、删除,成员判断。 从数据结构角度看,Python的列表是一个可变长度的顺序存储结构,每一个位置存放的都是对象的指针。 对于这个列表 alist = [1, “a”, [11,22], {“k1”:”v1”}],其在内存内的存储方式是这样的: 创建方式 创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可 ['1',2,'hello'] # 列表 ('1',2,'hello') # 元组 {'1',2,'hello'} # 集合 {'name':'juran','age':18} for i in ['1',2,'hello']: print(i) # 通过查看源码来看创建的方法 l = list(['1',2,'hello']) print(l) l = [1, 2, 3] l1 = [1, 'hello', 1.2] print(l1) ------------------------------------------------- list = [] # 定义空列表 list1 = ['physics',