法律法规数据库日志

项目:法律法规库



2011-07-24

工作内容:
1,重构了导入数据的代码,将文件中的中文字段以及表的列名提取出来放到属性文件中,根据属性文件动态构建sql


异常:sql sytax exception near database,pic...
原因:database是mysql关键字
解决:将database改成db

存在的问题:
1,数据不完整,有些可能是必填字段(标题和数据库),但没有值.
2,日期不完整,或错误,有些只给了年份,有的年份错误,影响录入. (对策:直接修改源文件,日期200.10.16被改成2000.10.16,然后转成长整形录入.如果需要更改直接修改数据库的字段)
3,属性文件包含中文,读取时出现乱码.



2011-07-25

工作内容:
1,新建个备份表laws_and_regulations2,用重新构建的importData类导入原始数据,其中日期被表示为长整形(原表为varchar,存储日期字符串如2006.12.11)


异常:sql out of range ...publish_time  -2.789323E9
原因:数值超出了mysql中INT的取值范围
解决:将INT改成BIGINT



2011-07-27

工作内容:
1,需求确定,初步决定用coreseek实现全文检索

异常:coreseek配置文件在记事本下修改后无法被读取
原因:怀疑是编码问题
解决:用ultraedit



2011-08-17

经过三星期的酱油,项目基本有了样子.前端检索功能已经搞定,后台建立索引,增删改查,日志等也已经实现.

检索采用solr+IK分词.1G左右的小文本查询时间都不到1秒,在可见的未来,文本量不会明显增加,所以速度这块暂时不是问题.倒是索引文件一共4G.这个有点大了,如果采用双核做备份的话,很占空间.优化索引结构是今后要解决的问题.目前考虑从分词器入手.由于对这块实在陌生,还要仔细研究研究.

程序方面,查询的拼接,以及客户端建立索引的写法还不理想,尤其是索引的建立,为了防止内存溢出,需要不断的访问服务器获取索引的状态.个人觉得还有改进的空间

有待解决的问题:

后台需要给编辑更多的提示,日志需要加入搜索功能,更新缓存,建立备份索引用来即时切换.



2011-08-24

尝试将索引连接到前台,发现复杂度远远超过预期.同一时刻只有一个线程可以建索引,后面的请求会被忽略掉,于是采用单例+同步的方式.但建立索引时间很长,用synchronized会导致没拿到锁的线程无限等待,这个实现就比较糟糕.如果锁被占用,应该立即返回并给用户反馈,后来发现ReentrantLock符合要求,tryLock()方法可以判断当前对象是否被锁住,如果锁被占用,则返回false,这样程序可以立即返回,告知用户其他人正在执行索引创建工作.如果此时锁空闲,则获取此对象锁,之后开启新线程去执行创建索引工作,然后主线程返回,告知用户正在创建索引.不过由于对多线程没什么了解,实现起来还颇费工夫.而且dwr的单例写法总是不成功,最后只好那全静态方法类去顶替.

同步做好了之后,怎么显示给用户也是麻烦.想了很久决定将索引信息插入数据库,然后前台轮询,拿到结果集之后,去做一个类似微博新消息的图层.capacityFixed插件还是很给力地完成了大部分工作,不过处理具体显示的信息也颇费神,包括成功失败分开显示,忽略,在新窗口中查看,查看或者忽略之后还要去数据库里把状态位改掉.拿到或没拿到锁的情况下,要给用户提示,而confirm,alert这种东西丑的连我都果断忍不下去了,明天还要找找相关插件.

话说回来,比较讽刺的是,这种功能编辑可能一年都用不了一回,甚至不给他们手动索引的接口都没问题,我为什么要大费周章的写这么个东西=.=连我也不清楚.

不过以后如果有相关需求,倒是可以借鉴这里的思路.

作为第一个独立做的项目,我还是从中得到很多经验教训,至少在以后的工作中,除非闲的DT,否则绝不应该先做这种功能,什么简单做什么,什么能反映到界面,让用户看出来,就先做什么.免得N多天过去了,人家一看你好像啥都没干,光打酱油了...

后面要坚持记日记了...

明天工作内容:
    1,联系编辑,把字段的格式,哪些非空,分类一和分类二的关系弄清楚.然后制定更新缓存的方案.
    2,把索引相关的功能完成
    3,前台看看有么有需要完善的,法律标题肯定要截一下,不然太长,格式也乱了,检索的信息也应该排一下版.要不要做个tooltip...要不要呢,要不要呢...

    还是应该尽快完成功能,今后去研究solr才是正道...

今天学到的东西

background-repeat: no-repeat  可以让背景填充整个空白,而不是不断重复

其他的忘了=.=

 

2011-09-05

     操作缓存的同步问题.

 

2011-09-08

    pre自动换行,防止撑开页面:

table{

TABLE-LAYOUT: fixed;

}

 

pre{

white-space: pre-wrap;word-wrap: break-word;

}

 

 

 

2011-09-10

 

防止input type=image自动刷新

<input type="image" src="web/style/images/resetButton.png" οnclick="AdvancedSearchApp.resetInput();return false;">  加入return false;

 

 

2011-09-15

 

div左右布局

<div style="width:100">

<div style="float:left;width:50px"></div>

        <div style="float:right:width:50px;margin-right: 0px !important;margin-right: -40px;"></div>

</div>

要点:子div必须制定宽度,IE6中第二个子div不会向右浮动,这样会导致错位,于是加margin处理

 

 

 

2011-09-26

 

<tr>

<td><s:property value="pl.pageShowString" escape="false"/></td>

</tr>

不能放在表单内,因为pages会自动生成表单

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值