# 自定义分词插件
# 命名空间要求
自定义分词类文件的命名空间:
namespace WindSearch\Plugin;
# 方法要求
自定义分词类要包含三个方法:
public function segmentAll($str,$is_idf=false) // 全分词
public function standard($str,$is_idf=false) // 精确分词
public function segmentNgram($str, $len); // ngram分词
segmentAll是全分词,standard是精确分词,segmentNgram是ngram分词,均返回分词后的terms数组;
//分词后,返回的数据结构
['term1','term2','...']
$is_idf
参数决定是否同时返回每个term的idf值(idf值用于bm25分数计算),如果$is_idf=true
,则返回的数据结构为:
[
'terms' => ['term1','term2','...'],
'idf' => [
'term1' => 'idf1',
'term2' => 'idf2'
// ...
]
];
segmentNgram的$len
参数表示窗口长度,例如2个字符,3个字符...
# 文件结构
自定义的分词插件要包含在一个文件夹内(不能是单文件的形式),然后将文件夹放在 /src/plugin/ 下面,注意:类名、类文件名、文件夹名,都要完全一样。
// 示例
|--plugin //插件文件夹
|---MyAnalyzer //自定义分词插件文件夹
|----MyAnalyzer.php // 类文件
|------namespace WindSearch\Plugin; // 类文件的命名空间
|----- class MyAnalyzer{... // 类文件的定义
|
# 加载自定义分词插件
然后调用下面的方法,加载自定义分词插件:
// 实例化引擎
$Wind = new \WindSearch\Index\Wind($indexName);
// 加载自定义分词
// 例如你的分词插件类名为 myAnalyzer
$Wind->loadCustomAnalyzer('myAnalyzer');
← 其它功能