今天主要就做了这两件事儿。
原型: function BuildExcerpts ( $docs, $index, $words, $opts=array() )
BuildExcerpts用来产生文档片段,有时候真怀疑到底是我思维有问题,还是coreseek设计的有问题,= =。不过此问题也不必太深究,既然用了,就暂且照着来吧。
这个方法效果不错,就是做法就点儿NC?= =。搜索后只拿到记录的id就不说啥了,再重新取数据得出二维数组,然后再把每一条记录中的某字段内容拿出来再做成数组,这个数组就是$docs了,然后使用BuildExcerpts方法得到高亮后的数组,再重新放回到原来的二维数组中。
到底是不是我想复杂了。。= =,$index只要写一个索引就行了。
再说UpdateAttributes吧。
原型: function UpdateAttributes ( $index, $attrs, $values )
立即更新指定文档的指定属性值。可以说,增量索引是为增量记录存在,这个方法则是为修改和删除考虑的。
修改跟删除,其实是一样的,不过从细处说又不太一样。
先说修改,我的做法是,写一个方法,只传入记录的id,然后从数据库取出记录,用此方法更新配置文件中所有的属性。这个其实还是很简单的,不过删除时碰到了点儿问题。后来经神仙指点,在配置文件sql_query的sql语句加一个字段,比如原来是select id, title, content from table,改成select id, title, content, 1 as del from table。这样只要在程序里多加一个过滤字段就可以了,删除时,只更新此字段,
$s->UpdateAttributes(‘post_main, post_delta’, array(‘del’), array($id => array(0)));
这样就可以了。
文档文档,写不来啊写不来。
这个问题是老大难问题了,没办法。
如果加入正向索引,膨胀率太高了。
在BBS或Blog类,不算长的文本,这个方案还能应付。
这也是导致Q/s始终不理想的重要原因之一。
[回复]