# 其它功能

# 删除内容

通过接口删除某个主键

$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();