Coreseek 安装
1.Coreseek报错信息:无法生成configure文件,option 'subdir-objects' is disabled,AM_PROG_AR缺失
解决办法:
在configure.ac文件中AM_INIT_AUTOMAKE options中增加subdir-objects,增加AM_PROG_AR
2.Coreseek报错信息:sphinxexpr.cpp:1746:43: note: declarations in dependent base ‘Expr_ArgVsSet_c<int>’ are not found by unqualified lookup
解决办法:运行补丁文件指定sphinxexpr.cpp路径。运行命令patch -p1<sphinxexpr.cpp-......patch
Coreseek 使用
自定义Coreseek词库
词库格式如下:
词\t词频率(非单字词为1)
x:1
保存为unigram.txt文件
运行命令bin/mmseg -u etc/unigram.txt生成词库uni.lib
检查分词效果命令 bin/mmseg -d etc/ data.txt>result.txt data.txt存有要分词的字符串,result.txt存有分词后的结果
设置过滤
1.属性过滤
SetFilter($attribute,$values,$exclude=false);
$attribute :属性 该属性需在Coreseek配置文件中有相关设置,比如过滤图片分类$cl->SetFilter(pcid,array(1));配置文件中select语句必须有pcid字段,且该字段被设置为可过滤sql_attr_uint = pcid;
$values:整数数组
$exclude:默认值false,表示过滤返回属性为$values的结果集;true 即返回属性非$values的结果集
2.属性值范围过滤
SetFilterRange($attribute,$min,$max,$exclude=false);
$attribute:属性
$min:最小值
$max:最大值
$exclude:默认值false,表示返回属性在最大值最小值范围内的结果集;true 返回相反结果集
3.多个属性过滤 (width>1024 or height>1024)
$cl->select("*,IF(width>1024 or height>1024 ,1,0) AS abc);设置查询信息返回的内容
$cl->SetFilter("abc",1);
设置排序
SetSortMode($mode,$sortby='');
$mode:排序模式 有以下几种模式:
SPH_SORT_RELEVANCE 模式, 按相关度降序排列(最好的匹配排在最前面)
SPH_SORT_ATTR_DESC 模式, 按属性降序排列 (属性值越大的越是排在前面)
SPH_SORT_ATTR_ASC 模式, 按属性升序排列(属性值越小的越是排在前面)
SPH_SORT_TIME_SEGMENTS 模式, 先按时间段(最近一小时/天/周/月)降序,再按相关度降序
SPH_SORT_EXTENDED 模式, 按一种类似SQL的方式将列组合起来,升序或降序排列。
SPH_SORT_EXPR 模式,按某个算术表达式排序。
$sortby:按那个属性排序