texnixe/similar

根据字段间的相似性查找相似页面或文件

安装: 109

依赖项: 0

建议者: 0

安全性: 0

星标: 28

关注者: 2

分支: 2

开放性问题: 0

类型:kirby-plugin

3.0.1 2023-09-03 10:23 UTC

This package is auto-updated.

Last update: 2024-10-03 12:39:08 UTC


README

GitHub release License Kirby 3 Pluginkit

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