搜索
首先,我做了索引。
然后我尝试了以下代码。
我得到了预期的结果。
use TeamTNT\TNTSearch\TNTSearch;
$tnt = new TNTSearch;
$tnt->loadConfig($config);
$tnt->selectIndex("name.index");
$res = $tnt->search("This is a test search", 12);
print_r($res); //returns an array of 12 document ids that best match your query
显示结果
我不明白如何添加查询。
//to display the results you need an additional query
//SELECT * FROM articles WHERE id IN $res ORDER BY FIELD(id, $res);
草案 1
$result = $tnt->query(SELECT * FROM articles WHERE id IN $res ORDER BY FIELD(id, $res));
print_r($result);
草案 2
・是否需要重新创建索引?
$indexer = $tnt->createIndex('name.index');
$indexer->query('SELECT * FROM articles WHERE id IN $res ORDER BY FIELD(id, $res)');
好吧,让我试着解释一下。当你执行这一行
$res = $tnt->search("This is a test search", 12);
您的$res
变量将是一个如下所示的数组:
[
'ids' => [1,2,3,4,5],
'hits' => 5,
'execution time' => "4ms"
];
'ids' 表示与您的查询匹配的文档 ID。现在由您来查询数据库以实际获取 ID 为 [1,2,3,4,5] 的文档。如果你使用像 eloquent 这样的 ORM,你会像这样查询数据库
$ids = implode(",", $res['ids']);
$posts = Post::whereIn('id', $res['ids'])->orderByRaw("FIELD (ID, $ids)")->get();
现在$posts
变量包含您的实际帖子
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句