四 28
Lucene 索引滚动流程设计
TangFulin <tangfulin@gmail.com>
一. Index Writer:
1. 这里的 Writer 包括 Index Updater 和 Index Rebuilder ,但 Rebuilder 产生的索引文件不直接传送给 Searcher 使用,
而是覆盖 Updater 的索引,由 Updater 统一处理后续的流程
2. IndexUpdaterScheduler 每隔一段时间会设置 copy out timer 标识。
3. Updater 每次处理完一批 xml 文件后会查看 copy out timer 标识是否已经被设置,
如果是,则将当前的索引拷贝一份到 src-snap 目录下 yyyyMMddHHmm 格式的子目录中
4. Updater 为单线程,每次处理完一批 xml 后都会调用 optimizeAndCloseIdx ,所以可以保证 idx 数据是完整的
... (全文...)
四 24
假设我们定义了一个变量为:
file=/dir1/dir2/dir3/my.file.txt
我们可以用 ${ } 分别替换获得不同的值:
- ${file#*/}:拿掉第一条 / 及其左边的字串:dir1/dir2/dir3/my.file.txt
- ${file##*/}:拿掉最后一条 / 及其左边的字串:my.file.txt
- ${file#*.}:拿掉第一个 . 及其左边的字串:file.txt
- ${file##*.}:拿掉最后一个 . 及其左边的字串:txt
- ${file%/*}:拿掉最后一条 / 及其右边的字串:/dir1/dir2/dir3
- ${file%/*}:拿掉第一条 / 及其右边的字串:(空值)
- ${file%.*}:拿掉最后一个 . 及其右边的字串 ... (全文...)
四 22
RSync 算法是澳大利亚人 Andrew Tridgell (samba的作者)发明的,按照 Andrew Tridgell 自己的话,这个算法只需要半个小时就能够理解,但是花费了他几年时间才研究出来。
Rsync 算法大概原理:(目标:把 HostA 上的FileNew 同步到 HostB 上 FileOld)
1) Host-B把File-Old划分成不重合的大小为K字节的若干块,不足K字节的结尾部分加上Padding,然后对每一块求弱Hash和强Hash。弱Hash就是说很有可能 ... (全文...)
四 17
机器配置:
uname -a :
Linux eshequn-SV06-A11 2.6.21.5-smp #1 SMP Sun Jan 27 23:51:02 CST 2008 i686 Intel(R) Xeon(TM) CPU 3.06GHz GenuineIntel GNU/Linux
cpuinfo:
processor : 2
model name : Intel(R) Xeon(TM) CPU 3.06GHz
meminfo:
MemTotal: 6234308 kB
disk info:
/dev/sda1 on / type reiserfs (rw,noatime)
lucene 配置
writer = new IndexWriter(indexDir, paodingAnalyzer, true, IndexWriter.MaxFieldLength.UNLIMITED);
writer.setMaxBufferedDocs(10000);
writer.setUseCompoundFile(true);
(全文...)
四 07
fulin.org 域名遭恶意抢注,愤怒却又无可奈何。重新注册了 fullin.org ,中间多了一个 L 。
其实我从年后就开始折腾域名的事情了。域名是在新网注册的,而当初注册 birdring.org 的时候,在万网里留了320块钱。于是就想把域名转到万网,用余下的钱来续费。可是找了半天,还是没有找到如何转域名,甚至用记忆中的用户名和密码都无法登录新网了。打新网的客服电话也没有用,一大断的语音提示,平白浪费电话费罢了。
稍微一犹豫,域名进入了赎回期。这个时候在 whois 记录上看到有 update 操作,难道是新网或者代理商自己续费了?我很愤怒的在新 ... (全文...)
四 03
一. php client 端:
1. update 与 rebuild 分开
2. update 准实时:insert,update,delete 实时调用更新索引接口(带 primery key 的update 和 delete)
3. rebuild 使用命令行或者 cron 运行,不能使用 web 页面(有运行时间限制),但可以在后台管理系统中作触发(如何防止重复触发?)
二. Java IndexServer:(接受 client 发过来的数据,输出为临时 xml 文件)
1. 日常 update 的 xml 临时文件可以考虑保存在内存文件系统中(保留最近n天的文件debug使用)
2. 更多的处理过程 log (debug 使用,日常监控使用)
3. rebuild 的 xml 临时文件一定要保存在内存文件系统中
4. xml 文件按年或月分目录
...
(全文...)