package util import ( "regexp" ) // type Job struct { SourceMid string //数据源的MongoId Category string //类别 CategorySecond string //二级分类 Content 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 } type ExtField struct { BlockTag map[string]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 //标段(包)中标价 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 }