msgbartop
better late than never
msgbarbottom

Aug 27 BuildExcerpts and UpdateAttributes

今天主要就做了这两件事儿。

原型: 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)));

这样就可以了。

文档文档,写不来啊写不来。



Reader's Comments

  1. |

    这个问题是老大难问题了,没办法。
    如果加入正向索引,膨胀率太高了。
    在BBS或Blog类,不算长的文本,这个方案还能应付。
    这也是导致Q/s始终不理想的重要原因之一。

    [回复]



Leave a Comment




*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word