finc/vufind-results-grouping

VuFind结果列表中的结果分组

v1.0.3 2024-02-12 12:01 UTC

This package is not auto-updated.

Last update: 2024-09-24 13:20:17 UTC


README

此模块提供了一种简单且高效但并非完美的识别和分组看似重复记录的方法。它使用Apache Solr的分组功能

当使用以下分组参数调用时,Solr将具有相同matchkey的所有记录分组。每个组中这些类似记录中的第一个称为“头记录”,其余的称为“子记录”。

用户可以选择性地开启或关闭分组。最后的状态会被保存为cookie。这使得比较和评估分组变得容易。

此README描述了使其工作所需的步骤,并提供了一些故障排除提示。

example

快速步骤

索引

在Solr中索引一个matchkey字段。一个好的起点是将format:isbn:year作为matchkey索引,其中

  • format: 这应该是简单的格式(大约10个不同的术语)
  • isbn: 这应该是标准化的isbn13
  • year: 出版年份(yyyy)

如果您的元数据中没有isbn,您可以使用

`format:author:title:year:publisher`

`format:author:title:year`

`format:author:title`

作为matchkey,其中

  • format: 这应该是简单的格式(可能大约有10个不同的术语)
  • author: 这应该被标准化为小写姓氏
  • title: 这应该被标准化(小写)
  • year: 出版年份(yyyy)
  • publisher: 这应该被标准化(小写,处理缩写和标点符号)

启用此模块

将以下行添加到您的 composer.json

"finc/vufind-results-grouping": "@dev"

更新您的composer包

$ composer update

将模块添加到您的 application.config.php

$modules = [
    'Laminas\Cache', 'Laminas\Form', 'Laminas\Router', 'LmcRbacMvc', 'Laminas\I18n',
    'Laminas\Mvc\I18n', 'SlmLocale', 'VuFindTheme', 'VuFindSearch', 'VuFind',
    'VuFindAdmin', 'VuFindApi', 'VuFindResultsGrouping'
];

对于高级用户,也可以将其复制到 modules 并在 httpd-vufind.conf 中启用。但这样您需要自己处理更新。

在自定义代码模块中启用VuFindResultsGrouping模块

由于VuFindResultsGrouping模块扩展了多个VuFind类,因此如果您已向VuFind安装添加了包含自定义代码的模块,并且自定义了以下任何类,您需要在 application.config.php 中将VuFindResultsGrouping模块列在自定义模块之前,并相应地更改继承引用。

VuFindResultsGrouping模块中扩展的VuFind类

\VuFind\AjaxHandler\AbstractBase
\VuFind\Controller\SearchController
\VuFind\Search\Factory\AbstractSolrBackendFactory
\VuFind\Search\Solr\Params
\VuFindSearch\Backend\Solr\Backend
\VuFindSearch\Backend\Solr\Response\Json\RecordCollection

使用trait

在您的记录驱动程序中,通过添加使用SubrecordTrait

class Your RecordDriver extends SolrMarc {
    ...
    use VuFindResultsGrouping/RecordDriver/SubrecordTrait;
    ...   
}

这仅仅添加了一些访问器方法。它不会干扰您的自定义代码。

将参数添加到配置

在您的本地 config.ini 中,将以下内容添加到 [Index] 部分

[Index]
...
group = true
group.field = "enter the name of your matchkey here"
group.limit = 10

用户界面

JavaScript

js/resultGrouping.js 添加到您的主题配置中。

HTML / 模板

我们使用Bootstraps collapse功能来实现这一点。它可能需要将VuFind的 result-list.phtml 进行“Bootstrap化”,因为Bootstrap有时会与默认VuFind中使用的Flexboxes冲突。

复选框

search/controls/group.phtml 中的HTML放在您想启用/禁用分组的复选框所在的位置,例如在search/results.phtml中。

按钮

我们需要一个按钮来打开/关闭可折叠的 div。它可以在 RecordDriver/DefaultRecord/result-list-grouping-button.phtml 中找到,并且应该放在现有的按钮“添加到收藏”和“添加到书袋”下面。

注意两个随机字符串 pid(面板id)和 pgid(面板组id),它们控制按钮和折叠之间的链接。它必须对每个记录是唯一的。

可折叠记录

子记录本身可以在 RecordDriver/DefaultRecord/result-list-subrecords.phtml 中找到。此代码也应放入 result-list.phtml 中。我们将其放置在记录的末尾。

限制

请注意,我们不提供基于 result-grid 布局的模板。

外部来源