# 其它功能
# 删除内容
通过接口删除某个主键
$indexName = 'test';
$Wind = new \WindSearch\Index\Wind($indexName);
// 删除test索引库下,主键为009B3F90-0921-4657-7665-673F21345089 的内容 (uuid)
$Wind->delete('009B3F90-0921-4657-7665-673F21345089');
// 删除test索引库下,主键为 123 的内容 (int)
$Wind->delete('123');
// 注意,调用delete方法时,会清空所有的缓存数据。
# 恢复内容
$indexName = 'test';
$Wind = new \WindSearch\Index\Wind($indexName);
// 恢复test索引库下,已经删除的主键009B3F90-0921-4657-7665-673F21345089 (uuid)
$Wind->restore('009B3F90-0921-4657-7665-673F21345089');
// 恢复test索引库下,已经删除的主键 123 (int)
$Wind->restore('123');
# 搜索缓存
// 实例化对象
$Wind = new \WindSearch\Index\Wind($indexName); //$indexName 当前索引库的名称
// 开启缓存
// 可输入int类型参数,表示缓存多少秒,示例为搜索结果缓存60秒,超过60秒则过期,自动重新搜索缓存
// 不传参数或为0,表示永远不过期
$Wind->onCache(60);
// 开始搜索...
//其它缓存操作...
//强制关闭缓存
$Wind->closeCache();
//删除所有缓存
$Wind->delCache();
# 自定义同义词
用户可自定义同义词,自定义同义词的文件在 /windIndexCore/synonym/source/synonymCustom.txt
单向对应:
例如:症状|表现,这种格式,只会在搜索“症状”时,匹配“表现”,但不会反过来;
互相对应:
例如:简写-缩写-简称,这种格式,如果搜索“缩写”,则还会同时匹配剩下的简写、简称,搜索其它词也一样;
两种对应方式不可混淆使用。
构建同义词索引
//实例化引擎
$Wind = new \WindSearch\Index\Wind($indexName);
// 每次添加完自定义同义词后,使用此接口,构建同义词索引,然后接下来就可以正常搜索了
$Wind->buildSynonymIndex();
开启同义词搜索
//实例化引擎
$Wind = new \WindSearch\Index\Wind($indexName);
//开启分词
$Wind->loadAnalyzer();
//开启同义词
$Wind->onSynonym();
//搜索...
// 搜索单个字段
$query = [
'match' => [
'field' => [
'name' => 'title',
'query' => $text,
'operator' => '', // or 分词后匹配任何一个词项即可; and 必须匹配所有词项;空 根据相关度倒序排序
'analyzer' => 'segment', // 分词模式 为空/complete/not,代表不分词、整体匹配; segment 中文分词;
// 是否使用同义词
'synonym' => true,
'highlight' => [ // 结果高亮 高亮结果存储在额外的字段
'is_cut' => true, // 是否将未匹配的地方截取掉
'fixed_length' => '', //为空,则保持原长度
],
'minimum_should_match' => '45%', //控制精度 最少应该匹配几个,operator为空时,此项会起作用
],
// 结果排序
'sort' => [
'time' => 'desc' //asc 按字段值正序 desc 按字段值倒序
],
'list_rows' => $listRows, //每页多少条数据
'page' => $page, //第几页
]
];
开启同义词后,强制关闭同义词:$Wind->closeSynonym();
# 拼音搜索
在构建索引时,可以开启拼音索引开关
// 实例化引擎
$Wind = new \WindSearch\Index\Wind($indexName);
// 构建索引前,进行初始化
$Wind->buildIndexInit();
// 开启拼音索引
$Wind->onPinyin();
//下面进行正常的数据导入即可...
//从数据库中查询数据
foreach ($result as $v) {
$Wind->indexer($v);
}
// 写入文件
$Wind->batchWrite();
// 所有数据全部导入完成后,开始构建索引
$Wind->buildIndex();
索引构建完成后,假如说,数据库的内容包含“春暖花开”这个词,用户在前台比如输入“cnhk”、或者“chunnuanhuakai”,都能搜索到“春暖花开”。
开启拼音索引开关后,强制关闭拼音索引: $Wind->closePinyin();
# 获取索引库列表
// 实例化对象
$Wind = new \WindSearch\Index\Wind($indexName); //$indexName 当前索引库的名称
// 获取索引库列表信息
$indexLibraryList = $Wind->getIndexList();
# 删除指定索引库
// 实例化对象
$Wind = new \WindSearch\Index\Wind($indexName); //$indexName 当前索引库的名称
//删除 $indexName 索引库
$Wind->delIndex();