这是大约半年前写在QQ空间里的,现在转过来吧

SAP Business One的序列号添加实在是太恶心了,难用又麻烦,不知道为啥,我们公司这个实施顾问一口咬定b1不能做序列号自动添加的功能,我算是服了,求人不如求己,自己来呗。东找找,西找找,这个问问,那个问问,终于还是有点收获,今天又头痛的厉害,昏睡一天,下午起来,突然有了灵感,大概知道怎么做了,于是乎动手,写,调试,5点半下班的时候搞出来了。下楼去跟使用的人说了,结果人先给我来了一句,“怎么别人下班的时候你才上班啊?”晕一个。。。

恩,把东西记录在这里,没准有人看见了会有需要呢。。

格式化查询语句:
execute UtmpGetSNArr $[$43.5.1] ,$[$43.37.69]


关于coreseek删除数据
Posted in Coreseek on 2008/12/01 / 评论(0) »
开始我也不知道具体如何操作,后来向乔大叔询问了一下,大概明白了怎么个做法

具体就是:建立数据表的时候就多一个字段,字段名为deleted

当php操作删除数据的时候,同时对索引进行更新,使用UpdateAttributes

然后当你查询的时候设置过滤SetFilter,将deleted为1的排除就可以了
coreseek的php实现例子
Posted in Coreseek on 2008/11/26 / 评论(0) »
今天把coreseek和目前干的项目进行了整合了,前台用的是php,测试数据在mysql里面,共有11w条数据
如果采用普通的mysql查询,页面运行的时间是0.9s,索引以后搜索索引再根据索引得到的id查询数据库详细信息的页面执行时间是0.03s,速度快了30倍,我很满意,哈哈

以下是php搜索索引的核心部分代码
<?php
require_once AN_ROOT."/inc/sphinxapi.php";
require_once 
AN_ROOT."/res/adodb/adodb.inc.php";
$keywords $_REQUEST['keywords'];

$info    getInfoCoreSeek($keywords,$_GET['page']);

function 
getInfoCoreSeek($keywords,$page=1) {
    
$mode SPH_MATCH_ANY;
    
$host "localhost";
    
$port 3312;
    
$index "*";
    
$limit 4;
    
$ranker SPH_RANK_PROXIMITY_BM25;

    if(!
$page$page=1;
    
$page intval($page);
    
$off = ($page-1)*$limit;

    
$cl = new SphinxClient ();
    
$cl->SetServer $host$port );
    
$cl->SetConnectTimeout );
    
$cl->SetWeights ( array ( 100) );
    
$cl->SetMatchMode $mode );
    
$cl->SetLimits $off$limit, ( $limit>10000 ) ? $limit 10000 );
    
$cl->SetRankingMode $ranker );
    
$cl->SetArrayResult true );
    
$res    $cl->Query join(" "$keywords), $index );
    if(
$res) {
        
$pageL    PageQuery($res['total'],$page,4,"act=search&keywords=".$_REQUEST['keywords']);
        foreach(
$res['matches'] as $v) {
            
$arrID[]    = $v['id'];    
        }
        
$rs    $GLOBALS['db']->GetAll("select id,title,content from info where id in(".join(','$arrID).")");
        
$GLOBALS['tpl']->assign('pageL'$pageL);
        
//echo '<pre>';
        //print_r($res);
        //echo '</pre>';
        
return $rs;
    }
}
?>
我在使用coreseek的时候,默认值,即csft.conf中的charset_type = sbcs。如果是这样的话,当我们进行搜索的时候
sudo /usr/local/coreseek/bin/search 测试

其返回值的中文将会是乱码,因为sbcs的定义是“Single Byte Character Set 单字节字符集“,这样是不符合我们的需求的,所以我们需要中文的utf-8。根据文档中的描述,charset_type 的另一个选项是utf-8,但实际上这对于中文是不行的。
下面,我将我的方法写出来供新手参考:

首先,复制mmseg中的data文件夹到你的mmseg的安装目录中,当然,可以不这么做,但是我希望是将有联系的东西放在一起便于查找
sudo cp /home/anerg/software/mmseg.3.0b3/data/ /usr/local/mmseg/ -R

这里可以根据你的情况设定具体的路径

然后进入刚才的路径,生成字典文件。
cd /usr/local/mmseg/data

运行以下命令生成字典
sudo /usr/local/mmseg/bin/mmseg -u unigram.txt

会生成一个unigram.txt.uni文件,将这个文件改名或者复制为uni.lib在当前文件夹
sudo cp unigram.txt.uni uni.lib

先去官方网站下载最新的2个包,我下的是3.0 beta4,得到以下两个包
csft3_0b4.tar.gz
mmseg3_0b3.tar.gz

我将其放在/home/anerg/software了

解压
tar -xzvf mmseg3_0b3.tar.gz
tar -xzvf csft3_0b4.tar.gz

编译mmseg
cd mmseg*
sudo ./configure --prefix=/usr/local/mmseg
sudo make

很不幸,这里我出错了,错误提示为:css/UnigramCorpusReader.cpp:89: error: 'strncmp' was not declared in this scope
手动修改了src/css/UnigramCorpusReader.cpp
在上面添加了一句
#include <string.h>

分页: 9/10 第一页 上页 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]