首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

delphi 实现 根据给定标题去《中国青年报》网上电子报数据查找匹配内容,并从该内容取出引题、正题、副题、作者正文。

大家好,又见面了,我是你们朋友全栈君。 项目要求:根据给定标题去《中国青年报》网上电子报数据查找匹配内容,并从该内容取出引题、正题、作者正文。...l: Integer; begin l := length(endstr); if dfDelBefore in Flags then begin //删除字符串前半部分...); StrPCopy(pPattern, pattern); Result := MatchPattern(pSource, pPattern); end; {匹配字符串函数} {从磁盘搜索指定类型所有文件...} end; until FindNext(FileRec) 0; system.SysUtils.FindClose(FileRec); end; {从磁盘搜索指定类型所有文件...Memo1.Text:=zhenwen; } if not directoryExists(edit1.Text) then begin showmessage('请输入标引txt路径

65040

使用Redis实现附近的人及打车服务

打车服务: 每辆网约车都有个编号(666),网约车需将自己经度、纬度发给叫车应用 打车时,打车应用会根据用户经纬度位置,查找用户附近车辆,并匹配 等把位置相近用户车辆匹配后,打车应用就会根据车辆编号...对于一个LBS应用,除记录经纬度,还需根据用户经纬度信息在车辆Hash集合中进行范围查询。 而涉及到范围查询,就要求集合元素有序,Hash显然不满足需求。...命令 GEOADD 把一组经纬度信息对应一个ID,记录到GEO集合。..., 返回键包含位置元素当中, 与中心距离不超过给定最大距离所有位置元素。...LBS应用执行下面命令: # 根据输入用户经纬度信息,查找以该经纬度为中心5公里内车辆信息,返回给LBS应用 GEORADIUS cars:locations 116.054579 39.030452

1.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

GeoHash核心原理解析

一提到索引,大家脑子里马上浮现出B树索引,因为大量数据库(MySQL、oracle、PostgreSQL等)都在使用B树。...B树索引本质上是对索引字段进行排序,然后通过类似二分查找方法进行快速查找,即它要求索引字段是可排序,一般而言,可排序是一维字段,比如时间、年龄、薪水等等。...城区 郊区 通过上面的介绍我们知道了GeoHash就是一种将经纬度转换成字符串方法,并且使得在大部分情况下,字符串前缀匹配越多距离越近,回到我们案例,根据所在位置查询来查询附近餐馆时,只需要将所在位置经纬度转换成...随着每次迭代区间[a,b]总在缩小,并越来越逼近39.928167; 4)如果给定纬度x(39.928167)属于左区间,则记录0,如果属于右区间则记录1,这样随着算法进行会产生一个序列1011100...,序列长度跟给定区间划分次数有关。

1.1K30

如何实现查找附近的人-GEO

geopos:获取地理位置坐标。geodist:计算两个位置之间距离。georadius:根据用户给定经纬度坐标来获取指定范围内地理位置集合。...,结果基本吻合查询某位置内其他成员信息georadius以给定经纬度为中心, 返回键包含位置元素当中, 与中心距离不超过给定最大距离所有位置元素。...WITHHASH: 以 52 位有符号整数形式, 返回位置元素经过原始 geohash 编码有序集合分值。 这个选项主要用于底层应用或者调试, 实际作用并不大。COUNT 限定返回记录数。...ASC: 查找结果根据距离从近到远排序。DESC: 查找结果根据从远到近排序。...根据给定经纬度坐标查询附近成员# 根据查询坐标,查询5km以内成员信息127.0.0.1:6379> georadius km 102.705224 25.0499233 5 km1) "b"2

28820

Redis GeoHash核心原理解析

一提到索引,大家脑子里马上浮现出B树索引,因为大量数据库(MySQL、oracle、PostgreSQL等)都在使用B树。...通过上面的介绍我们知道了GeoHash就是一种将经纬度转换成字符串方法,并且使得在大部分情况下,字符串前缀匹配越多距离越近,回到我们案例,根据所在位置查询来查询附近餐馆时,只需要将所在位置经纬度转换成...随着每次迭代区间[a,b]总在缩小,并越来越逼近39.928167; 如果给定纬度x(39.928167)属于左区间,则记录0,如果属于右区间则记录1,这样随着算法进行会产生一个序列1011100,...每个POI都有经纬度信息,用图1bSQL语句在mySQL建立了POI_spatial表,其中latlng两个字段来代表纬度经度。为后续分析方便起见,我人造了40万个POI数据。...(图6a),个数为m(m<40万),复杂度为Log(40万)*过滤函数; 在步骤a过滤得到m个POI查找某经度范围POI(图6b),个数为n(n<m),复杂度为m*过滤函数; 用球面距离公式计算位置与步骤

1.4K20

用 Redis 查询 “附近的人” !妙啊!

: 返回两个给定位置之间距离; GEOHASH: 返回一个或多个位置对象Geohash表示; GEORADIUS: 以给定经纬度为中心,返回目标集合与中心距离不超过给定最大距离所有位置对象;...GEORADIUSBYMEMBER: 以给定位置对象为中心,返回与其距离不超过给定最大距离所有位置对象。...,返回目标集合与中心距离不超过给定最大距离所有位置对象。...距离单位用户给定范围单位保持一致。 WITHCOORD:将位置对象经度维度也一并返回。...在实际搜索时,首先会根据搜索半径计算geohash网格等级(即右图中网格大小等级),并确定九宫格位置(即红色九宫格位置信息);再依次查找计算九宫格点(蓝点红点)与中心点距离,最终筛选出距离范围内

22340

Redis 到底是怎么实现“附近的人”这个功能呢?

: 返回两个给定位置之间距离; GEOHASH: 返回一个或多个位置对象Geohash表示; GEORADIUS: 以给定经纬度为中心,返回目标集合与中心距离不超过给定最大距离所有位置对象;...GEORADIUSBYMEMBER: 以给定位置对象为中心,返回与其距离不超过给定最大距离所有位置对象。...,返回目标集合与中心距离不超过给定最大距离所有位置对象。...距离单位用户给定范围单位保持一致。 WITHCOORD:将位置对象经度维度也一并返回。...在实际搜索时,首先会根据搜索半径计算geohash网格等级(即右图中网格大小等级),并确定九宫格位置(即红色九宫格位置信息);再依次查找计算九宫格点(蓝点红点)与中心点距离,最终筛选出距离范围内

1.9K10

Redis 实现「附近的人」

: 返回两个给定位置之间距离; GEOHASH: 返回一个或多个位置对象Geohash表示; GEORADIUS: 以给定经纬度为中心,返回目标集合与中心距离不超过给定最大距离所有位置对象;...GEORADIUSBYMEMBER: 以给定位置对象为中心,返回与其距离不超过给定最大距离所有位置对象。...,返回目标集合与中心距离不超过给定最大距离所有位置对象。...距离单位用户给定范围单位保持一致。 - WITHCOORD:将位置对象经度维度也一并返回。...在实际搜索时,首先会根据搜索半径计算geohash网格等级(即右图中网格大小等级),并确定九宫格位置(即红色九宫格位置信息);再依次查找计算九宫格点(蓝点红点)与中心点距离,最终筛选出距离范围内

69420

揭开Redis“附近的人”神秘面纱

: 返回两个给定位置之间距离; GEOHASH: 返回一个或多个位置对象Geohash表示; GEORADIUS: 以给定经纬度为中心,返回目标集合与中心距离不超过给定最大距离所有位置对象...; GEORADIUSBYMEMBER: 以给定位置对象为中心,返回与其距离不超过给定最大距离所有位置对象。...,返回目标集合与中心距离不超过给定最大距离所有位置对象。...距离单位用户给定范围单位保持一致。 - WITHCOORD:将位置对象经度维度也一并返回。...在实际搜索时,首先会根据搜索半径计算geohash网格等级(即右图中网格大小等级),并确定九宫格位置(即红色九宫格位置信息);再依次查找计算九宫格点(蓝点红点)与中心点距离,最终筛选出距离范围内

93520

看用 Redis 如何实现微信「​附近的人」​功能?

: 返回两个给定位置之间距离; GEOHASH: 返回一个或多个位置对象Geohash表示; GEORADIUS: 以给定经纬度为中心,返回目标集合与中心距离不超过给定最大距离所有位置对象;...GEORADIUSBYMEMBER: 以给定位置对象为中心,返回与其距离不超过给定最大距离所有位置对象。...,返回目标集合与中心距离不超过给定最大距离所有位置对象。...距离单位用户给定范围单位保持一致。 - WITHCOORD:将位置对象经度维度也一并返回。...在实际搜索时,首先会根据搜索半径计算geohash网格等级(即右图中网格大小等级),并确定九宫格位置(即红色九宫格位置信息);再依次查找计算九宫格点(蓝点红点)与中心点距离,最终筛选出距离范围内

89850

Redis 到底是怎么实现“附近的人”这个功能呢?

: 返回两个给定位置之间距离; GEOHASH: 返回一个或多个位置对象Geohash表示; GEORADIUS: 以给定经纬度为中心,返回目标集合与中心距离不超过给定最大距离所有位置对象;...GEORADIUSBYMEMBER: 以给定位置对象为中心,返回与其距离不超过给定最大距离所有位置对象。...,返回目标集合与中心距离不超过给定最大距离所有位置对象。...距离单位用户给定范围单位保持一致。 WITHCOORD:将位置对象经度维度也一并返回。...在实际搜索时,首先会根据搜索半径计算geohash网格等级(即右图中网格大小等级),并确定九宫格位置(即红色九宫格位置信息);再依次查找计算九宫格点(蓝点红点)与中心点距离,最终筛选出距离范围内

1.1K10

Redis 到底是怎么实现“附近的人”这个功能

: 返回两个给定位置之间距离; GEOHASH: 返回一个或多个位置对象Geohash表示; GEORADIUS: 以给定经纬度为中心,返回目标集合与中心距离不超过给定最大距离所有位置对象;...GEORADIUSBYMEMBER: 以给定位置对象为中心,返回与其距离不超过给定最大距离所有位置对象。...,返回目标集合与中心距离不超过给定最大距离所有位置对象。...距离单位用户给定范围单位保持一致。 - WITHCOORD:将位置对象经度维度也一并返回。...在实际搜索时,首先会根据搜索半径计算geohash网格等级(即右图中网格大小等级),并确定九宫格位置(即红色九宫格位置信息);再依次查找计算九宫格点(蓝点红点)与中心点距离,最终筛选出距离范围内

89930

Redis 到底是怎么实现“附近的人”这个功能

: 返回两个给定位置之间距离; GEOHASH: 返回一个或多个位置对象Geohash表示; GEORADIUS: 以给定经纬度为中心,返回目标集合与中心距离不超过给定最大距离所有位置对象...; GEORADIUSBYMEMBER: 以给定位置对象为中心,返回与其距离不超过给定最大距离所有位置对象。...,返回目标集合与中心距离不超过给定最大距离所有位置对象。...距离单位用户给定范围单位保持一致。 - WITHCOORD:将位置对象经度维度也一并返回。...在实际搜索时,首先会根据搜索半径计算geohash网格等级(即右图中网格大小等级),并确定九宫格位置(即红色九宫格位置信息);再依次查找计算九宫格点(蓝点红点)与中心点距离,最终筛选出距离范围内

77720

Redis 是怎么实现 “附近的人”

: 返回两个给定位置之间距离; GEOHASH: 返回一个或多个位置对象Geohash表示; GEORADIUS: 以给定经纬度为中心,返回目标集合与中心距离不超过给定最大距离所有位置对象...; GEORADIUSBYMEMBER: 以给定位置对象为中心,返回与其距离不超过给定最大距离所有位置对象。...[ASC|DESC] [COUNT count] [STORE key] [STORedisT key] 以给定经纬度为中心,返回目标集合与中心距离不超过给定最大距离所有位置对象。...距离单位用户给定范围单位保持一致。 - WITHCOORD:将位置对象经度维度也一并返回。...在实际搜索时,首先会根据搜索半径计算geohash网格等级(即右图中网格大小等级),并确定九宫格位置(即红色九宫格位置信息);再依次查找计算九宫格点(蓝点红点)与中心点距离,最终筛选出距离范围内

1.4K10

Redis高级篇之GEO搜索最近地铁口

例如滴滴打车,最直观操作就是实时记录更新各个车位置,然后当我们要找车时,在数据库查找距离我们(坐标x0,y0)附近r公里范围内部车辆使用如下SQL即可:select taxi from position...经纬度是一种常用地理坐标系统,它使用经度纬度来表示地球上位置。在GEO数据结构,经度纬度被编码为一个64位整数,以便进行高效计算比较。...跳表是一种基于链表数据结构,它可以实现快速查找、插入删除操作。在GEO数据结构,跳表被用于存储地理位置坐标信息,以便进行高效搜索排序。...desc在上述命令,我们使用GEOPOS命令查找距离给定位置(三溪站)1公里以内地铁口。...GEOPOS命令返回结果包括地铁口ID、经纬度距离

42332

利用 Redis 实现“附近的人”功能!

GEORADIUS:以给定经纬度为中心,返回目标集合与中心距离不超过给定最大距离所有位置对象。...GEORADIUSBYMEMBER:以给定位置对象为中心,返回与其距离不超过给定最大距离所有位置对象。...,返回目标集合与中心距离不超过给定最大距离所有位置对象。...距离单位用户给定范围单位保持一致。 WITHCOORD:将位置对象经度维度也一并返回。...再依次查找计算九宫格点(蓝点红点)与中心点距离,最终筛选出距离范围内点(红点)。 算法分析 为什么要用这种算法策略进行查询,或者说这种策略优势在哪,让我们以问答方式进行分析说明。

97120

简单几步,实现 Redis 查询 “附近的人”

: 返回两个给定位置之间距离; GEOHASH: 返回一个或多个位置对象Geohash表示; GEORADIUS: 以给定经纬度为中心,返回目标集合与中心距离不超过给定最大距离所有位置对象;...GEORADIUSBYMEMBER: 以给定位置对象为中心,返回与其距离不超过给定最大距离所有位置对象。...,返回目标集合与中心距离不超过给定最大距离所有位置对象。...距离单位用户给定范围单位保持一致。 WITHCOORD:将位置对象经度维度也一并返回。...在实际搜索时,首先会根据搜索半径计算geohash网格等级(即右图中网格大小等级),并确定九宫格位置(即红色九宫格位置信息);再依次查找计算九宫格点(蓝点红点)与中心点距离,最终筛选出距离范围内

59320

IM里“附近的人”功能实现原理是什么?如何高效率地实现它?

具体在产品技术上实现原理,也很容易理解: 1)现在移动端(ios、android等),通过系统API很容易抓到用户当前位置(即经纬度数据); 2)根据第1步经纬度数据,很容易计算出两个点之间距离...对于IM新手来说,可能对于第2步根据经纬度数据计算出两点距离,觉得有点难度,实际上根据数据公式(自已百度一下吧,有点复杂,哥不贴了),用代码来实现,只有短短十来行代码。...)GEODIST:返回两个给定位置之间距离; 4)GEOHASH:返回一个或多个位置对象Geohash表示; 5)GEORADIUS:以给定经纬度为中心,返回目标集合与中心距离不超过给定最大距离所有位置对象...[WITHDIST] [WITHHASH] [ASC|DESC] [COUNT count] [STORE key] [STORedisT key] 以上指令,将以给定经纬度为中心,返回目标集合与中心距离不超过给定最大距离所有位置对象...在实际搜索时,首先会根据搜索半径计算geohash网格等级(即右图中网格大小等级),并确定九宫格位置(即红色九宫格位置信息);再依次查找计算九宫格点(蓝点红点)与中心点距离,最终筛选出距离范围内

1.8K00

Redis GEO 特性

版本要求 Redis 3.2 或者更新 添加获取位置 geoadd (添加位置) 这个命令对于经纬度是有要求: 有效经度从-180度到180度。...,我们使用 geopos 命令来获取位置名字具体经纬度 获取命令如下: GEOPOS location-set name [name ...]...,但是指定中心点方式不同:georadius 使用是用户给定经纬度,而 georadiusbymember 则使用存储在位置集合里面的某个地点作为中心点。...m|km|ft|mi 指定是计算范围时单位; 如果给定了可选 WITHCOORD , 那么命令在返回匹配位置时会将位置经纬度一并返回; 如果给定了可选 WITHDIST , 那么命令在返回匹配位置时会将位置与中心点之间距离一并返回...; 在默认情况下, GEORADIUS GEORADIUSBYMEMBER 结果是未排序, ASC 可以让查找结果根据距离从近到远排序, 而 DESC 则可以让查找结果根据从远到近排序; COUNT

1.1K20

微信附近的人,用redis也能实现?(GEO)

遍历数据,自己对比,获得每个人和自己距离 把数据库所有记录都遍历一遍,把每一条记录经纬度自己经纬度做个对比,就能获取到各个记录离自己距离。...如何根据两个经纬度,获取到这两个点之间距离我在网上找了个方法,大家可以参考下 /** * 求两个已知经纬度之间距离,单位为米 * * @param lng1 $ ,lng2 经度 * @param...GEOPOS:获取某个地理位置坐标 GEODIST:获取两个地理位置距离 GEORADIUS:根据给定地理位置坐标获取指定范围内地理位置集合 GEORADIUSBYMEMBER:根据给定地理位置获取指定范围内地理位置集合...里面的两个元素以及他们对应经纬度 其实上述例子就是说把 user_1 user_2 经纬度存在了 nearbyPeople 这个 key redis> GEOPOS nearbyPeople...ASC: 查找结果根据距离从近到远排序。 DESC: 查找结果根据从远到近排序。

59610
领券