- labelme_json_to_dataset ValueError: path is on mount ‘D:‘,start on C
广药门徒
json
这是你的labelme运行时label照片的盘和保存目的地址的盘不同都值得报错labelme_json_to_datasetValueError:pathisonmount'D:',startonC只需要放一个盘但可以不放一个目录
- Vue.js `v-memo` 性能优化技巧
轻口味
VUE.JS入门与实践vue.js性能优化前端
Vue.jsv-memo性能优化技巧今天我们来聊聊Vue3.2引入的一个性能优化指令:v-memo。如果你在处理大型列表或复杂组件时,遇到性能瓶颈,那么v-memo可能会成为你的得力助手。什么是v-memo?v-memo是Vue3.2新增的内置指令,用于缓存特定元素节点的虚拟DOM(VNode)。在节点更新时,通过复用之前的VNode,减少重新创建和比较的开销,从而提升渲染性能。使用场景v-mem
- npm、cnpm、yran、pip、django命令查询、安装、删除、更新及运行、打包汇总积累
亲,你有多少时间可以重来
前端npm前端node.js
npm、cnpm、yran这三个命令,不同的项目适合不同的命令,原因未知。精通一种我觉得就行了。npm命令的安装、删除、更新常见命令汇总了一下:1.查看当前npm信息:npm-v2.查看当前npm信息返回https://registry.npmjs.org/npmconfiggetregistry3.更换当前的镜像源,用淘宝或者华为要快不少。npmconfigsetregistryhttp://r
- 使用Elasticsearch和SelfQueryRetriever实现智能电影检索
hgSdaegva
elasticsearchjenkins大数据python
在当今信息爆炸的时代,快速而准确地检索数据变得尤为重要。Elasticsearch是一个强大的分布式搜索和分析引擎,能够高效地处理大量数据。在这篇文章中,我们将结合Elasticsearch和SelfQueryRetriever,展示如何通过语言模型实现智能电影查询。技术背景介绍Elasticsearch提供多租户能力和无模式的JSON文档存储,广泛应用于全文搜索和分析场景。通过将其与语言模型结合
- Three.js + GIS:打造三维地理信息系统的教程
全栈探索者chen
threeJSjavascript开发语言ecmascript学习three.js前端3d
Three.js+GIS:打造三维地理信息系统的教程Three.js是构建WebGL3D应用的强大工具,而结合GIS(地理信息系统)后,可以实现炫酷的三维地理可视化效果。本教程将从基础入手,教你如何用Three.js打造一个简单的三维GIS应用。一、项目规划1.目标功能我们希望实现以下功能:加载三维地图:加载全球地图或指定区域。添加三维数据:在地图上展示建筑、标注等3D数据。交互功能:用户可以缩放
- C#中使用FreeSql进行数据库操作,并在WPF的MVVM模式下使用
ysdysyn
c#数据库wpf
在java转C#WPF上位机,MVVM过程中,遇到数据库的问题,经过简单的学习FreeSql语法糖,进行一下简单的封装及使用。我们在C#项目中实现FreeSql技术,首先在我们需要在使用语法糖所在的文件下点击依懒性>管理NuGet程序包,搜索FreeSql并进行下载:在appsettings.json配置文件中输入数据库连接配置,如果没有可在文件夹下自行创建,这里的连接的数据库是MYSQL和SQL
- Web-3.0学习路线
奶龙牛牛
web3
方向学习内容✅区块链基础区块链、智能合约、共识机制✅智能合约Solidity/Rust(Ethereum/Solana)✅前端React.js,Next.js,Web3.js,ethers.js✅后端Node.js,Python,Golang(链上数据)✅存储IPFS,Arweave,Filecoin(去中心化存储)✅交互MetaMask,WalletConnect(钱包)如果你是前端开发Reac
- Vue 2 生命周期钩子,Vue 3 生命周期钩子【详解】
TOP印
vuevue.jsjavascriptecmascript
Vue.js的生命周期是指Vue实例从创建到销毁的过程,分为多个阶段,每个阶段有对应的生命周期钩子函数,可以在这些钩子中添加特定的逻辑。下面是Vue2和Vue3生命周期的详细介绍,以及示例代码。Vue2生命周期钩子beforeCreate:实例初始化之后,数据观测和事件配置之前被调用。created:实例创建完成后被调用,数据观测已完成,属性和方法可以访问,但DOM还未生成。beforeMount
- python自动下载阿里云数据库数据_阿里云数据库Redis备份下载(Python)
weixin_39844426
#!/usr/bin/envpython3.6#coding=utf-8importosimporturllib.request,json,datetime,timeimportsslfromaliyunsdkcore.clientimportAcsClientfromaliyunsdkr_kvstore.request.v20150101.DescribeBackupsRequestimport
- react + redux 状态管理操作
诚诚程程成
前端react.jsjavascript前端
目录1概念2Redux安装3创建子模块并导入4中间件为react注入store5在组件中使用store数据6修改store数据7提交action传参8异步状态操作9redux调试工具1概念Redux是一个全局状态管理的JS库2Redux安装在react中使用redux,官方要求安装两个其他插件:ReduxToolkit和react-reduxReduxToolkit:官方推荐编写redux逻辑的方
- React18+Redux+antd 项目实战 JS
Alexeigirl
javascript开发语言前端框架react.js
React18+Redux+antd项目实战jsAntDesign插件官网Axios官网(可配置请求拦截器和响应拦截器)JavaScript官网Echarts官网一、项目前期准备1.创建新项目hotel-managernpxcreate-react-apphotel-manager2.安装依赖//安装路由npmireact-router-domnpmiaixos//安装组件库npmiantdnpm
- Python数据处理(一):处理 JSON、XML、CSV 三种格式数据
solocoder222
Pythonpython数据处理CodeRiver
Python数据处理系列博客来啦!本系列将以《Python数据处理》这本书为基础,以书中每章一篇博客的形式带大家一起学习Python数据处理。书中有些地方讲的不太详细,我会查阅其他资料来补充,力争每篇博客都把知识点涵盖全且通俗易懂。这本书主要讲了如何用Python处理各种类型的文件,如JSON、XML、CSV、Excel、PDF等。后面几章还会讲数据清洗、网页抓取、自动化和规模化等使用技能。我也是
- 一文学会react+redux(模块化/同步/异步操作)
青山绿水的蓝
web前端react.js前端javascript
本文基于npxcreate-react-app创建太久没看react,闲来无事重新捡起做一点笔记,希望对部分vue的同行想学习redux起到一些帮助1.准备工作安装1.安装项目插件2.修改`package.json`中的scripts,将`react-scripts`替换为`craco`:3.craco.config.js根目录下创建或修改`craco.config.js`来配置Less以及@别名
- 切换node版本
test猿
前端javascript
一、在Linux上切换Node.js版本有多种实现方法:1.使用nvm(NodeVersionManager):安装nvm:可以通过curl或wget来安装nvm,具体请参考nvm的官方文档。安装不同版本的Node.js:使用nvm可以轻松地安装、管理和切换不同版本的Node.js。例如,要安装Node.js的最新版本,可以使用命令nvminstallnode。要安装特定版本的Node.js,可以
- 【docker】拉取镜像报证书错误:error pulling image configuration: download failed after attempts=6: tls: failed t
眉梢i
docker容器运维
在使用docker时,采用阿里云镜像源时会出现pull失败情况:解决办法:sudomkdir-p/etc/dockersudotee/etc/docker/daemon.json<<-'EOF'{"registry-mirrors":["https://yxzrazem.mirror.aliyuncs.com"]}EOFsudosystemctldaemon-reloadsudosystemctl
- React学习之相关代码库(三十六)
77458
ReactReact学习
本章将讲述React代码库的组织,约定,和它的实现方式。如果你想更加关注React,或者说作为开发贡献者,对React进行一些修改,这篇博客或许可以帮到你。当然,我们没必要去过度的关注React应用的约定,因为其中有很多是历史遗留问题,后续版本可能会被pass掉。1.自定义模板系统在Facebook,他们内部人员使用了一个叫做Haste的自定义模板系统,这个系统非常类似CommonJS规范,也使用
- JS深入解析函数及变量
天涯学馆
大前端&移动端全栈架构javascriptecmascript前端架构
目录构造函数new关键字的运作机制严格模式函数表达式与函数声明变量提升函数组合深递归与尾递归构造函数定义构造函数
- 深入解析JS高级语法
天涯学馆
大前端&移动端全栈架构javascript前端架构
目录执行环境与运行机制垃圾回收V8引擎的即时编译内存管理尾调用优化正则表达式高级用法微任务与宏任务
- JS求数组的最大值和最小值
天涯学馆
大前端&移动端全栈架构javascript前端架构
1.使用Math.max和Math.min函数配合扩展运算符(…)constarray=[1,½,3,4.5,-2,6,-7
- JS深度剖析异步编程方式
天涯学馆
大前端&移动端全栈架构javascriptecmascript前端架构
目录回调函数事件监听发布/订阅Promiseasync/awaitGenerator函数与迭代器深度剖析JavaScript异步编程方式,主要涉及以下几个核心概念和技术回调函数回调函数的基本概念回调函数(CallbackFunction)是一种在特定事件或条件触发时被调用的函数,常用于处理异步操作的结果。在JavaScript中,回调函数是实现异步编程的最初也是最基础的方式。它的工作原理是:将一个
- JS 深度解析Function模式
天涯学馆
大前端&移动端全栈架构javascriptecmascript前端架构原型模式
目录函数作为基本数据类型函数作为对象函数作为构造函数函数作为类的替代品函数作为高阶组件箭头函数与常规函数的区别
- JS 深入理解代码复用模式
天涯学馆
大前端&移动端全栈架构javascript原型模式前端
目录对象Object构造函数组合/混入(Mixins)模块化高阶函数装饰器设计模式其他复用技术JavaScript中的代码复用模式,需要探讨多种实现代码复用的技术手段和策略,包括但不限于原型继承、构造函数、
- JS 深度解析作用域、作用域链与闭包
天涯学馆
大前端&移动端全栈架构javascriptecmascript前端
目录作用域词法作用域块级作用域作用域链闭包作用域词法作用域(LexicalScope)JavaScript采用词法作用域,意味着变量的作用域是在编译阶段确定的,由代码在何处定义决定,而非运行时决定。简单来说,变量的作用域取决于它在源代码中的位置。全局作用域:在任何函数外部定义的变量具有全局作用域,对整个程序可见。
- JS 深度解析this指针
天涯学馆
大前端&移动端全栈架构javascript前端
目录this绑定规则默认绑定隐式绑定显示绑定new绑定箭头函数特殊情况与陷阱丢失绑定优先级
- JS 全面解析Module模式
天涯学馆
大前端&移动端全栈架构javascript前端开发语言
目录基本结构与原理优点应用场景扩展与变体JavaScriptModule模式是一种设计模式,用于封装和管理代码,提供私有变量、私有方法和公有接口,实现模块化编程。Module模式通过闭包来创建一个封装的私有作用域,同时允许对外暴露必要的接口。基本结构与原理Module模式的核心是一个自执行的匿名函数,它返回一个对象,该对象包含公有接口。基本结构如下:constMyModule=(
- JS常用实践难点解析
天涯学馆
大前端&移动端全栈架构javascriptecmascript前端
目录浏览器类型与版本特性检测上下文和函数参数传递JSON标记及eval函数高级闭包浏览器类型与版本通过navigator对象来检测浏览器类型、版本以及其他相关信息。navigator对象是浏览器提供的一个原生对象,它包含了关于浏览器和操作系统的信息。浏览器类型与主要版本最直接的方式是查看navigator.userAgent属性
- JS 中的DOM 操作
天涯学馆
大前端&移动端全栈架构javascript前端
目录概念Node接口NodeList接口,HTMLCollection接口ParentNode接口,ChildNode接口Document节点Element节点属性的操作Text节点和DocumentFragment节点
- JS 中的BOM 操作
天涯学馆
大前端&移动端全栈架构javascript前端
目录浏览器模型概述window对象Navigator对象,Screen对象CookieXMLHttpRequest对象同源限制CORS通信Storage接口History对象
- JS数据类型&运算符&标准库
天涯学馆
大前端&移动端全栈架构javascript开发语言前端
目录数据类型运算符标准库对象Object对象属性描述对象Array对象包装对象Boolean对象Number对象Strin
- CSS预处理器Stylus
天涯学馆
大前端&移动端全栈架构cssstylus前端
CSS预处理器StylusStylus是一款高效的CSS预处理器,它提供了简洁灵活的语法来帮助开发者更高效地编写和管理CSS代码。下面是一些基础到进阶的Stylus代码教程,涵盖变量、嵌套、混合、继承、运算符等核心特性。1.安装Stylus在项目中使用Stylus前,你需要先安装Stylus编译器。如果你使用的是Node.js,可以通过npm安装:npminstall-Dstylus2.基本使用变
- apache 安装linux windows
墙头上一根草
apacheinuxwindows
linux安装Apache 有两种方式一种是手动安装通过二进制的文件进行安装,另外一种就是通过yum 安装,此中安装方式,需要物理机联网。以下分别介绍两种的安装方式
通过二进制文件安装Apache需要的软件有apr,apr-util,pcre
1,安装 apr 下载地址:htt
- fill_parent、wrap_content和match_parent的区别
Cb123456
match_parentfill_parent
fill_parent、wrap_content和match_parent的区别:
1)fill_parent
设置一个构件的布局为fill_parent将强制性地使构件扩展,以填充布局单元内尽可能多的空间。这跟Windows控件的dockstyle属性大体一致。设置一个顶部布局或控件为fill_parent将强制性让它布满整个屏幕。
2) wrap_conte
- 网页自适应设计
天子之骄
htmlcss响应式设计页面自适应
网页自适应设计
网页对浏览器窗口的自适应支持变得越来越重要了。自适应响应设计更是异常火爆。再加上移动端的崛起,更是如日中天。以前为了适应不同屏幕分布率和浏览器窗口的扩大和缩小,需要设计几套css样式,用js脚本判断窗口大小,选择加载。结构臃肿,加载负担较大。现笔者经过一定时间的学习,有所心得,故分享于此,加强交流,共同进步。同时希望对大家有所
- [sql server] 分组取最大最小常用sql
一炮送你回车库
SQL Server
--分组取最大最小常用sql--测试环境if OBJECT_ID('tb') is not null drop table tb;gocreate table tb( col1 int, col2 int, Fcount int)insert into tbselect 11,20,1 union allselect 11,22,1 union allselect 1
- ImageIO写图片输出到硬盘
3213213333332132
javaimage
package awt;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imagei
- 自己的String动态数组
宝剑锋梅花香
java动态数组数组
数组还是好说,学过一两门编程语言的就知道,需要注意的是数组声明时需要把大小给它定下来,比如声明一个字符串类型的数组:String str[]=new String[10]; 但是问题就来了,每次都是大小确定的数组,我需要数组大小不固定随时变化怎么办呢? 动态数组就这样应运而生,龙哥给我们讲的是自己用代码写动态数组,并非用的ArrayList 看看字符
- pinyin4j工具类
darkranger
.net
pinyin4j工具类Java工具类 2010-04-24 00:47:00 阅读69 评论0 字号:大中小
引入pinyin4j-2.5.0.jar包:
pinyin4j是一个功能强悍的汉语拼音工具包,主要是从汉语获取各种格式和需求的拼音,功能强悍,下面看看如何使用pinyin4j。
本人以前用AscII编码提取工具,效果不理想,现在用pinyin4j简单实现了一个。功能还不是很完美,
- StarUML学习笔记----基本概念
aijuans
UML建模
介绍StarUML的基本概念,这些都是有效运用StarUML?所需要的。包括对模型、视图、图、项目、单元、方法、框架、模型块及其差异以及UML轮廓。
模型、视与图(Model, View and Diagram)
&
- Activiti最终总结
avords
Activiti id 工作流
1、流程定义ID:ProcessDefinitionId,当定义一个流程就会产生。
2、流程实例ID:ProcessInstanceId,当开始一个具体的流程时就会产生,也就是不同的流程实例ID可能有相同的流程定义ID。
3、TaskId,每一个userTask都会有一个Id这个是存在于流程实例上的。
4、TaskDefinitionKey和(ActivityImpl activityId
- 从省市区多重级联想到的,react和jquery的差别
bee1314
jqueryUIreact
在我们的前端项目里经常会用到级联的select,比如省市区这样。通常这种级联大多是动态的。比如先加载了省,点击省加载市,点击市加载区。然后数据通常ajax返回。如果没有数据则说明到了叶子节点。 针对这种场景,如果我们使用jquery来实现,要考虑很多的问题,数据部分,以及大量的dom操作。比如这个页面上显示了某个区,这时候我切换省,要把市重新初始化数据,然后区域的部分要从页面
- Eclipse快捷键大全
bijian1013
javaeclipse快捷键
Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)Alt+↑ 当前行和上面一行交互位置(同上)Alt+← 前一个编辑的页面Alt+→ 下一个编辑的页面(当然是针对上面那条来说了)Alt+En
- js 笔记 函数
征客丶
JavaScript
一、函数的使用
1.1、定义函数变量
var vName = funcation(params){
}
1.2、函数的调用
函数变量的调用: vName(params);
函数定义时自发调用:(function(params){})(params);
1.3、函数中变量赋值
var a = 'a';
var ff
- 【Scala四】分析Spark源代码总结的Scala语法二
bit1129
scala
1. Some操作
在下面的代码中,使用了Some操作:if (self.partitioner == Some(partitioner)),那么Some(partitioner)表示什么含义?首先partitioner是方法combineByKey传入的变量,
Some的文档说明:
/** Class `Some[A]` represents existin
- java 匿名内部类
BlueSkator
java匿名内部类
组合优先于继承
Java的匿名类,就是提供了一个快捷方便的手段,令继承关系可以方便地变成组合关系
继承只有一个时候才能用,当你要求子类的实例可以替代父类实例的位置时才可以用继承。
在Java中内部类主要分为成员内部类、局部内部类、匿名内部类、静态内部类。
内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类如同一个人是由大脑、肢体、器官等身体结果组成,而内部类相
- 盗版win装在MAC有害发热,苹果的东西不值得买,win应该不用
ljy325
游戏applewindowsXPOS
Mac mini 型号: MC270CH-A RMB:5,688
Apple 对windows的产品支持不好,有以下问题:
1.装完了xp,发现机身很热虽然没有运行任何程序!貌似显卡跑游戏发热一样,按照那样的发热量,那部机子损耗很大,使用寿命受到严重的影响!
2.反观安装了Mac os的展示机,发热量很小,运行了1天温度也没有那么高
&nbs
- 读《研磨设计模式》-代码笔记-生成器模式-Builder
bylijinnan
java设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
/**
* 生成器模式的意图在于将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示(GoF)
* 个人理解:
* 构建一个复杂的对象,对于创建者(Builder)来说,一是要有数据来源(rawData),二是要返回构
- JIRA与SVN插件安装
chenyu19891124
SVNjira
JIRA安装好后提交代码并要显示在JIRA上,这得需要用SVN的插件才能看见开发人员提交的代码。
1.下载svn与jira插件安装包,解压后在安装包(atlassian-jira-subversion-plugin-0.10.1)
2.解压出来的包里下的lib文件夹下的jar拷贝到(C:\Program Files\Atlassian\JIRA 4.3.4\atlassian-jira\WEB
- 常用数学思想方法
comsci
工作
对于搞工程和技术的朋友来讲,在工作中常常遇到一些实际问题,而采用常规的思维方式无法很好的解决这些问题,那么这个时候我们就需要用数学语言和数学工具,而使用数学工具的前提却是用数学思想的方法来描述问题。。下面转帖几种常用的数学思想方法,仅供学习和参考
函数思想
把某一数学问题用函数表示出来,并且利用函数探究这个问题的一般规律。这是最基本、最常用的数学方法
- pl/sql集合类型
daizj
oracle集合typepl/sql
--集合类型
/*
单行单列的数据,使用标量变量
单行多列数据,使用记录
单列多行数据,使用集合(。。。)
*集合:类似于数组也就是。pl/sql集合类型包括索引表(pl/sql table)、嵌套表(Nested Table)、变长数组(VARRAY)等
*/
/*
--集合方法
&n
- [Ofbiz]ofbiz初用
dinguangx
电商ofbiz
从github下载最新的ofbiz(截止2015-7-13),从源码进行ofbiz的试用
1. 加载测试库
ofbiz内置derby,通过下面的命令初始化测试库
./ant load-demo (与load-seed有一些区别)
2. 启动内置tomcat
./ant start
或
./startofbiz.sh
或
java -jar ofbiz.jar
&
- 结构体中最后一个元素是长度为0的数组
dcj3sjt126com
cgcc
在Linux源代码中,有很多的结构体最后都定义了一个元素个数为0个的数组,如/usr/include/linux/if_pppox.h中有这样一个结构体: struct pppoe_tag { __u16 tag_type; __u16 tag_len; &n
- Linux cp 实现强行覆盖
dcj3sjt126com
linux
发现在Fedora 10 /ubutun 里面用cp -fr src dest,即使加了-f也是不能强行覆盖的,这时怎么回事的呢?一两个文件还好说,就输几个yes吧,但是要是n多文件怎么办,那还不输死人呢?下面提供三种解决办法。 方法一
我们输入alias命令,看看系统给cp起了一个什么别名。
[root@localhost ~]# aliasalias cp=’cp -i’a
- Memcached(一)、HelloWorld
frank1234
memcached
一、简介
高性能的架构离不开缓存,分布式缓存中的佼佼者当属memcached,它通过客户端将不同的key hash到不同的memcached服务器中,而获取的时候也到相同的服务器中获取,由于不需要做集群同步,也就省去了集群间同步的开销和延迟,所以它相对于ehcache等缓存来说能更好的支持分布式应用,具有更强的横向伸缩能力。
二、客户端
选择一个memcached客户端,我这里用的是memc
- Search in Rotated Sorted Array II
hcx2013
search
Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed?
Would this affect the run-time complexity? How and why?
Write a function to determine if a given ta
- Spring4新特性——更好的Java泛型操作API
jinnianshilongnian
spring4generic type
Spring4新特性——泛型限定式依赖注入
Spring4新特性——核心容器的其他改进
Spring4新特性——Web开发的增强
Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC
Spring4新特性——Groovy Bean定义DSL
Spring4新特性——更好的Java泛型操作API
Spring4新
- CentOS安装JDK
liuxingguome
centos
1、行卸载原来的:
[root@localhost opt]# rpm -qa | grep java
tzdata-java-2014g-1.el6.noarch
java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64
java-1.6.0-openjdk-1.6.0.0-11.1.13.4.el6.x86_64
[root@localhost
- 二分搜索专题2-在有序二维数组中搜索一个元素
OpenMind
二维数组算法二分搜索
1,设二维数组p的每行每列都按照下标递增的顺序递增。
用数学语言描述如下:p满足
(1),对任意的x1,x2,y,如果x1<x2,则p(x1,y)<p(x2,y);
(2),对任意的x,y1,y2, 如果y1<y2,则p(x,y1)<p(x,y2);
2,问题:
给定满足1的数组p和一个整数k,求是否存在x0,y0使得p(x0,y0)=k?
3,算法分析:
(
- java 随机数 Math与Random
SaraWon
javaMathRandom
今天需要在程序中产生随机数,知道有两种方法可以使用,但是使用Math和Random的区别还不是特别清楚,看到一篇文章是关于的,觉得写的还挺不错的,原文地址是
http://www.oschina.net/question/157182_45274?sort=default&p=1#answers
产生1到10之间的随机数的两种实现方式:
//Math
Math.roun
- oracle创建表空间
tugn
oracle
create temporary tablespace TXSJ_TEMP
tempfile 'E:\Oracle\oradata\TXSJ_TEMP.dbf'
size 32m
autoextend on
next 32m maxsize 2048m
extent m
- 使用Java8实现自己的个性化搜索引擎
yangshangchuan
javasuperword搜索引擎java8全文检索
需要对249本软件著作实现句子级别全文检索,这些著作均为PDF文件,不使用现有的框架如lucene,自己实现的方法如下:
1、从PDF文件中提取文本,这里的重点是如何最大可能地还原文本。提取之后的文本,一个句子一行保存为文本文件。
2、将所有文本文件合并为一个单一的文本文件,这样,每一个句子就有一个唯一行号。
3、对每一行文本进行分词,建立倒排表,倒排表的格式为:词=包含该词的总行数N=行号