php+sphinx+scws 中文无效英文有效

发布于 2022-09-11 16:30:29 字数 1566 浏览 20 评论 0

<?php

//我也搞不懂是怎么回事,直接上代码:

header("Content-type: text/html; charset=utf-8");
$b_time = microtime(true);
$key = trim(I("key"));
$index = "test1";
//========================================分词

$so = scws_new();
$so->set_charset('utf-8');

// //默认词库
$so->add_dict(ini_get('scws.default.fpath') . '/dict.utf8.xdb');
//自定义词库
// $so->add_dict('./dd.txt',SCWS_XDICT_TXT);
//默认规则
$so->set_rule(ini_get('scws.default.fpath') . '/rules.utf8.ini');

//设定分词返回结果时是否去除一些特殊的标点符号
$so->set_ignore(true);

//设定分词返回结果时是否复式分割,如“中国人”返回“中国+人+中国人”三个词。
// 按位异或的 1 | 2 | 4 | 8 分别表示: 短词 | 二元 | 主要单字 | 所有单字
//1,2,4,8 分别对应常量 SCWS_MULTI_SHORT SCWS_MULTI_DUALITY SCWS_MULTI_ZMAIN SCWS_MULTI_ZALL
$so->set_multi(false);

//设定是否将闲散文字自动以二字分词法聚合
$so->set_duality(false);

//设定搜索词
$so->send_text($key);
$words_array = $so->get_result();
$words1 = "";
foreach ($words_array as $v) {
$words1 = $words1 . '|(' . $v['word'] . ')';
}

//加入全词
$words1 = trim($words1, '|');
$so->close();
echo '<p>输入:' . $key . '</p>';
echo '<p>分词:' . $words1 . '</p>';
//========================================搜索
$sc = new SphinxClient();
$sc->SetServer('127.0.0.1', 9312);
$sc->SetMatchMode(SPH_MATCH_EXTENDED);
$sc->SetArrayResult(true);
$res = $sc->Query($words1, $index);
print_r($res);
$e_time = microtime(true);
$time = $e_time - $b_time;
print_r("总耗时:" . $time);

?>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文