123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- package util
- import (
- "regexp"
- )
- type Job struct {
- SourceMid string //数据源的MongoId
- Category string //类别
- CategorySecond string //二级分类
- Category_Old string //类别
- CategorySecond_Old string //二级分类
- Content string //正文
- ContentClean string //清洗后的正文
- Title string //标题
- SpiderCode string //爬虫代码
- Site string //站点
- Domain string //网站域名
- Href string //原文链接
- City string //城市
- Province string //省份
- Jsondata *map[string]interface{} //
- Data *map[string]interface{} //数据库源数据
- Block []*Block //分块
- Result map[string][]*ExtField //结果
- BuyerAddr string //采购单位地址
- BlockPackage map[string]*BlockPackage //块中的分包
- Winnerorder []map[string]interface{} //中标候选人排序
- PackageInfo map[string]map[string]interface{} //分包信息
- RuleBlock *RuleBlock //分块规则
- BlockClassify *BlockClassify //块分类
- BrandData [][]map[string]string //品牌抽取
- PriceNumberData [][]map[string]interface{} //单价和个数抽取
- HasTable int //有table
- HasKey int //是否匹配到table中的标题
- HasBrand int //有品牌
- HasGoods int //有商品
- IsFile bool //有附件
- FullAreaScore map[string]float64 //全称province得分
- FullCityScore map[string]float64 //全称city得分
- FullDistrictScore map[string]float64 //全称district得分
- SimAreaScore map[string]float64 //简称province得分
- SimCityScore map[string]float64 //简称city得分
- SimDistrictScore map[string]float64 //简称district得分
- Dataging int
- IsClearnMoney string //站点清理金额
- IsUnRulesTab bool //是否为不规则表格
- }
- type ExtField struct {
- BlockTag map[string]string //块标签
- BlockTitle string //块标题
- Field string //属性
- Code string //匹配标签(字符串、正则)、正则或lua代码
- RuleText string //内容
- Type string //kv(细类:colon1,colon2,space,table)、正则(regexp)
- MatchType string //匹配类型:1:标签库类型(tag_string,tag_regexp),2:全文正则regcontent
- ExtFrom string //抽取来源(title,detail)
- SourceValue interface{} //抽取结果--未清理
- Value interface{} //抽取结果
- Score float64 //得分
- ScoreItem []*ScoreItem //打分项
- Weight int //权重值
- ValRepeat int //结果值重复次数,打分参考
- IsTrue bool //针对金额0是否有效的值,其他字段不参考
- }
- // 打分项
- type ScoreItem struct {
- Des string //分数说明
- Code string //匹配标签(字符串、正则)、正则或lua代码
- RuleText string //内容
- ScoreFrom string //打分来源
- Value interface{} //抽取结果
- Score float64 //得分结果
- }
- // 分块规则
- type RuleBlock struct {
- BlockRegs []*regexp.Regexp
- TitleRegs []*regexp.Regexp
- Classify *BlockClassify
- }
- // 块
- type Block struct {
- Tags []Tags //对块做的标签,可以作为数据抽取的依据
- Title string //块标题
- Titles []string //拆分以后多个块标题
- NotClassifyTitles []string //没有分出类的标题
- Index int //块索引
- Text string //块内容
- Start int //开始索引
- End int //结束索引
- ColonKV *JobKv //冒号kv (分出的对应的KV值)
- TableKV *JobKv //table kv (分出的对应的KV值)
- SpaceKV *JobKv //空格 kv (分出的对应的KV值)
- BPackage *BlockPackage //分包信息
- Tag map[string]bool //块标签
- Block []*Block //子块
- Classify map[string]bool //块分类
- Winnerorder []map[string]interface{} //块中,中标候选人排序
- }
- // 块
- type TmpBlock struct {
- Tags []Tags //对块做的标签,可以作为数据抽取的依据
- Title string //块标题
- Titles []string //拆分以后多个块标题
- Index int //块索引
- Text string //块内容
- Start int //开始索引
- End int //结束索引
- ColonKV string //冒号kv (分出的对应的KV值)
- TableKV string //table kv (分出的对应的KV值)
- SpaceKV string //空格 kv (分出的对应的KV值)
- BPackage string //分包信息
- Tag map[string]bool //块标签
- Block []*TmpBlock //子块
- Category string //块分类
- Winnerorder []map[string]interface{} //块中,中标候选人排序
- }
- // 分包和标签
- type BlockAndTag struct {
- Tag map[string]bool //块标签
- Block interface{} //块内容
- }
- // 段落
- type Segment struct {
- Index int //段落索引
- Text string //段落内容
- }
- // 包
- type BlockPackage struct {
- Origin string //包的原始值
- Name string //标段(包)名称
- Text string //包文 (包对应的正文)
- Budget float64 //标段(包)预算
- IsTrueBudget bool //标段(包)预算0是否有效
- Winner string //标段(包)中标单位
- WinnerTel string //中标单位联系电话
- WinnerPerson string //中标联系人
- Bidamount float64 //标段(包)中标价
- Agencyfee float64 //包服务费
- IsTrueAgencyfee bool //
- IsTrueBidamount bool //标段(包)中标价 0是否有效
- Index string //序号 (转换后编号,只有数字或字母)
- Type string //类型 (匹配后面的标段、包之类的词)
- ColonKV *JobKv //冒号kv (分出的对应的KV值)
- TableKV *JobKv //table kv (分出的对应的KV值)
- SpaceKV *JobKv //空格 kv (分出的对应的KV值)
- BidStatus string //成交状态
- WinnerOrder []map[string]interface{} //中标人排序
- Accuracy bool //包里面抽取字段的准确性,如果能打上块标签的话,就不用中标候选人中的值覆盖包里面的值
- }
- // 联系人
- type ContactFormat struct {
- Direction int
- IndexMap map[int]string
- MatchMap map[string]map[string]bool
- WeightMap map[string]map[string]interface{}
- }
- // kv
- type Kv struct {
- Key string
- Value string
- Line string
- PrevLine string
- NextLine string
- Title string
- }
- // 最终放到job上的kv
- type JobKv struct {
- Kvs []*Kv //有序的冒号kv
- Kvs_2 []*Kv //有序的冒号kv
- KvTags map[string][]*Tag //带权重的kv
- }
- func NewJobKv() *JobKv {
- return &JobKv{
- Kvs: []*Kv{},
- Kvs_2: []*Kv{},
- KvTags: map[string][]*Tag{},
- }
- }
- type NameCode struct {
- Name string
- Code string
- }
|