免费创建网站软件,wordpress stats,小说素材网站,如何确定网站栏目#x1f680; 优质资源分享 #x1f680;
学习路线指引#xff08;点击解锁#xff09;知识定位人群定位#x1f9e1; Python实战微信订餐小程序 #x1f9e1;进阶级本课程是python flask微信小程序的完美结合#xff0c;从项目搭建到腾讯云部署上线#xff0c;打造一… 优质资源分享
学习路线指引点击解锁知识定位人群定位 Python实战微信订餐小程序 进阶级本课程是python flask微信小程序的完美结合从项目搭建到腾讯云部署上线打造一个全栈订餐系统。Python量化交易实战入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
现状
在CAD看图过程中我们经常会需要用到查找文字的功能在AutoCAD软件查找一个文字时可以通过打开左下角输入命令find输入查找的文字然后设置查找范围就可以搜索到需要查询的文字。但在Web网页端打开CAD图查找文字时有没有同样的办法呢另外如果有没有办法实现在很多图纸中像百度那样做到全文检索的功能
实现思路
CAD图Web打开展示
拿之前分享的一款开源的利用最新技术栈Vue3开发的 唯杰地图云端图纸管理平台为例. 他实现了对AutoCAD格式的DWG图纸的云端管理查看功能。能对CAD图纸在线上传、打开、查看、版本管理; 在线图层管理切换查看功能; 属性数据查询功能等功能。
图中文字查找
图纸中文字查找方案
方法一 直接后台读取CAD图纸内容遍历所有的文字实体进行查找。
主要的文字实体包括 单行文本AcDbText多行文本AcDbMText,属性注记AcDbAttributeDefinition,块属性AcDbAttribute
实现步骤:
1 在前端写代码通过内存方式在后台打开CAD图形
// 打开地图let res await svc.openMap({ mapid: mapid, // 地图ID,(请确保此ID已存在可上传新图形新建ID) mapopenway: vjmap.MapOpenWay.Memory, // 后台以内存方式打开已上传的图})(2) 查找文本实体因为前端是javascript语言不可能直接去遍历后台图形数据库这时可以用表达式查询来后台进行查询 let query await svc.exprQueryFeature({ expr: gOutReturn : if((gInFeatureType AcDbText or gInFeatureType AcDbMText or gInFeatureType AcDbAttributeDefinition or gInFeatureType AcDbAttribute ), 1, 0);, fields: , limit: 100000 })表达式语法可参考https://vjmap.com/guide/expr.html
这样查询有个缺点就是每次查询都要在后台打开CAD图形然后再遍历图形数据库根据表达式过滤出要查找的文字效率低。 方法二 通过SQL语句查询数据库来查找文字
实现步骤:
1 在前端写代码通过几何渲染方式在后台打开CAD图形几何渲染方式第一次请求数据时会在后台打开图形然后把图形数据和属性数据会保存至空间数据库之后请求都会在空间数据库里查询数据。
// 打开地图let res await svc.openMap({ mapid: env.exampleMapId, // 地图ID,(请确保此ID已存在可上传新图形新建ID) mapopenway: vjmap.MapOpenWay.GeomRender // 以几何数据渲染方式打开})(2) sql语句查询文字直接上代码 let query await svc.conditionQueryFeature({ //只需要写sql语句where后面的条件内容,字段内容请参考文档服务端条件查询和表达式查询 // 查询所有文字(包括单行文本多行文本、块注记文字属性文字) 具体类型数字参考文档服务端条件查询和表达式查询-支持的cad实体类型 https://vjmap.com/guide/svrStyleVar.html condition: name12 or name13 or name26 or name27, fields: })SQL查询无需在后台再次打开CAD图形直接使用SQL语句查询数据库,效率高。 全文检索功能
如果后台有成百上千纸图纸怎么做到全文检索呢
首先想到的肯定是遍历所有的图纸然后根据要搜索的文字一个个的去查询这样也能实现就是图纸比较多时性能太低了耗时。
这里可以利用开源的全文检索库去实现。
开源的 Elasticsearch 以下简称 ES是目前全文搜索引擎的首选。
它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。
可以在后台实时查找出所有图形的文字然后利用ES建立索引然后利用ES去查询根据查找的结果定位到某图某实体上。
但是ES太重量级了也难部署用到这种搜索功能上简直就是大材小用。
下面推荐一款轻量级的单文件部署的全文搜索开源引擎。
Bleve是一款基于Golang实现的全文搜索与索引组件库具有简单的API、丰富的接口扩展能力、映射可自定义、全面的索引数据类型等特点。
组件官网http://blevesearch.com/组件仓库https://github.com/blevesearch/bleve 有兴趣的朋友可以搭建研究下。