texnixe / similar
根据字段间的相似性查找相似页面或文件
Requires
- php: >=8.0.0
- getkirby/composer-installer: ^1.1
Requires (Dev)
- roave/security-advisories: dev-latest
This package is auto-updated.
Last update: 2024-10-03 12:39:08 UTC
README
Kirby Similar
查找相关页面或文件。Kirby 3 Similar 是一个 Kirby CMS 插件,允许您根据字段间的相似性查找与当前项目相关的项。对于每个给定的字段,插件计算 Jaccard 索引,然后根据每个字段的系数对所有索引进行加权。
示例用例:当前页面有一个标签字段,包含三个值(红色、绿色、蓝色)。您想找到所有具有最小 Jaccard 索引 0.3(介于 0 和 1 之间)的兄弟页面。
商业用途
此插件是免费的,但如果您将其用于商业项目,请考虑
它与 Kirby 3 Related 插件有何不同
- 它允许您通过数组传递多个字段,并为每个字段提供系数,具体取决于该字段在确定相似性时的相对重要性。
- 相似性是根据 Jaccard 索引计算的,而不是像 Kirby 3 Related 插件那样根据匹配数量。
以下是一个快速示例,描述了区别
示例 1
页面 A:蓝色、绿色 页面 B:蓝色、绿色
匹配项:2 Jaccard 索引:2/2 = 1
示例 2
页面 A:蓝色、绿色、黄色 页面 B:蓝色、绿色
匹配项:2 Jaccard 索引:2/3 = 0.66666
虽然两个页面都有相同的匹配数量,但第二个示例中的 Jaccard 索引较低,因为还考虑了唯一标签的数量。
安装
下载
下载文件 并将其放置在 site/plugins/kirby-similar
内。
Git Submodule
您可以将插件添加为 Git Submodule。
$ cd your/project/root
$ git submodule add https://github.com/texnixe/kirby3-similar.git site/plugins/kirby-similar
$ git submodule update --init --recursive
$ git commit -am "Add Kirby Similar plugin"
运行以下命令以更新插件
$ cd your/project/root
$ git submodule foreach git checkout master
$ git submodule foreach git pull
$ git commit -am "Update submodules"
$ git submodule update --init --recursive
使用方法
相似页面
<?php
$similarPages = $page->similar($options);
foreach($similarPages as $p) {
echo $p->title();
}
相似文件
<?php
$similarImages = $image->similar($options);
foreach($similarImages as $image) {
echo $image->filename();
}
选项
您可以通过传递选项数组
<?php
$similarPages = $page->similar([
'index' => $page->siblings(false)->listed(),
'fields' => 'tags',
'threshold' => 0.2,
'delimiter' => ',',
'languageFilter' => false
]);
?>
index
搜索的集合。默认:$item->siblings(false)
(false
参数将排除当前页面从集合中)
fields
要搜索的字段的名称。默认:tags
单个字段 您可以传递一个字符串作为单个字段
'fields' => 'tags'
多个字段
您也可以将多个字段作为数组传递
'fields' => ['tags', 'size', 'category']
在这种情况下,所有字段都获得相同的系数 1。
您也可以传递一个包含每个字段系数的关联数组
'fields' => ['tags' => 1, 'size' => 1.5, 'category' => 3]
在过滤集合时,您可能想要更改单个字段的系数以获得更好的结果。例如,如果过滤器参数设置为 size
,则动态地分配更高的系数。
'fields' => ['tags' => 0.5, 'size' => 2, 'category' => 1]
delimiter
用于在字段中分隔值的分隔符。默认:,
threshold
最小 Jaccard 索引,即介于 0(无相似性)和 1(完全相似性)之间的值。默认:0.1
languageFilter
在多语言安装中通过语言过滤相似项。默认:false
许可证
Kirby 3 Similar 是开源软件,许可协议为 MIT 许可证。
版权所有 © 2019 Sonja Broda info@texniq.de https://sonjabroda.com