一:Sphinx(coreseek)的查询默认最大记录数是:1000,而我们想更改这个数值。就需要更改二个地方。
1是更改csft.conf(如果是sphinx就是sphinx.conf)配置文件的:max_matches = 10000 #后面数字就是你想查询的最大记录数。建议在1000~10000之内。
2是在api调用时,$cl->SetLimits($pageStart, $pageSize, $max_limits);用SetLimits的第三个参数更改为你想要的显示最大记录数。
经过这二个配置和程序更改,你再查询看看呢!(注意你搜索要有这么多记录哦。呵)
二:sphinx的高亮。
开始按程序来设置高亮,都是没问题的。因为都是英文嘛。问题点主要是出现在中文的高亮上面。我的页面和数据库都是gbk编码。
所以做了如下配置和程序更改。
$opts = array(
"before_match" => "<i>",
"after_match" => "</i>",
"chunk_separator" => "..",
"limit" => 10,
"around" => 3
);
//$docs必须是数组传进来哦
function search_highlight($docs) {
$this->s_keywords = iconv('gbk', 'utf-8', $this->s_keywords);
$docs[0] = iconv('gbk', 'utf-8', $docs[0]);
$arr_words = $this->h_cl->BuildExcerpts ( $docs, $this->s_index, $this->s_keywords, $this->h_opts);
$arr_words[0] = iconv('utf-8', 'gbk', $arr_words[0]);
$this->s_keywords = iconv('utf-8', 'gbk', $this->s_keywords);
return $arr_words;
}
至此,中文高亮就显示正常了
三:搜索排序
默认我用了:$cl->SetMatchMode(SPH_SORT_RELEVANCE);,
而我如果想把最新的结果显示在前面,必须要用SPH_SORT_TIME_SEGMENTS模式。
所以我在配置文件里加上了:sql_attr_timestamp = add_time
在程序中就加上了:$cl->SetSortMode(SEGMENTS, 'add_time');
这样就正常了!
详细解决方案
sphinx的小技巧三则(最大记录数、高亮、搜索排序)
热度:83 发布时间:2012-08-31 12:55:03.0
相关解决方案
- PHP Sphinx 搜索解决办法
- 请问有用过 Sphinx 吗?应该如何跟php结合使用
- sphinx 有关问题 求解 请各位大神
- 在PHP 5.4.10下安装PECL扩展 sphinx-1.1.0时遇到的有关问题
- sphinx 在 windows下到底如何安装
- sphinx SetSortMode 排序设置无效解决方法
- sphinx 实时目录(非增量索引)
- 筹建coreseek(sphinx+mmseg3)详细安装配置+php之sphinx扩展安装+php调用示例
- PHP Sphinx 搜索解决办法
- sphinx 有关问题 求解 请各位大神
- 在PHP 5.4.10下安装PECL扩展 sphinx-1.1.0时遇到的有关问题
- 如何使用 Sphinx autodoc 在不同目录中为 Python 模块文档使用多个路径?
- php 应用 Sphinx 接口相关操作
- 编写 Sphinx 文档
- 【CentOS-7.4】Sphinx + ReadTheDocs
- Windows 安装 Sphinx
- sphinx 使用教程-挺简单易懂
- 【sphinx】中文声学模型训练
- 全文搜索引擎介绍(sphinx)
- sphinx 4 AbstractDecoder
- Sphinx-for-chinese (中文全文搜索)安装步骤
- coreseek-4.1-beta 安装 mmseg sphinx
- paip 论全文检索实现方式lucene Sphinx solr以及比较
- sphinx 安装