subugoe/find

Solr 索引的前端

安装: 2,950

依赖项: 1

建议者: 0

安全: 0

星标: 16

关注者: 16

分支: 20

开放问题: 15

类型:typo3-cms-extension

3.3.0 2022-09-22 08:43 UTC

README

image

此 TYPO3 扩展旨在实现任意 Solr 索引的查询和显示。

它提供了配置查询多个方面的能力 - 例如查询字段、标签、通过 TypoScript 过滤 - 并通过 Fluid 模板设置显示。扩展包括标准显示功能的部分以及一些视图辅助工具,有助于创建这些模板。

安装

为了开发此扩展,请克隆此仓库,并通过 composer 使用 composer install 安装依赖项。

目标

此扩展的目标是提供

  • TYPO3 中任意 Solr 索引的访问
  • 基本显示的最小配置
  • 丰富的模板能力,以创建复杂的显示

基本示例

对于最基础的示例,你需要

  1. 将 find 插件添加到 TYPO3 页面

  2. 在你的网站/页面的模板中包含 find 插件的模板

  3. 在该页面的 TypoScript 模板中配置您的索引信息。至少,您应该设置默认 Solr 索引的地址和结果列表中要显示的字段

    plugin.tx_find.settings {
        connections {
            default {
                options {
                    host = solr.local
                    port = 8080
                    path = /
                    core = myIndex
                }
            }
        }
        standardFields {
            title = title
            snippet = publisher
        }
    }
    

    在这个设置下,find 将为您索引的默认搜索字段提供一个搜索表单,并显示以文档的 "标题" 字段为标题的结果列表,并将 "发布者" 字段添加为下方的片段。每个结果都可以点击以显示该文档的详细视图,该视图以 Solr 文档中的字段定义列表显示。

  4. 然后,你可以添加文本字段和数字范围选择的标签,例如

    plugin.tx_find.settings {
        facets {
            10 {
                id = format
                field = format
            }
            20 {
                id = year
                type = Histogram
                field = publishDateSort
            }
        }
    }
    
  5. 还可以添加扩展搜索选项的额外查询字段

    plugin.tx_find.settings {
        queryFields {
            10 {
                id = title
                type = Text
                extended = 1
            }
        }
    }
    

有更多 TypoScript 配置选项。请参阅本文件的其余部分和链接的示例配置,以了解它们。

示例项目

可以在 github 上找到一些示例项目。虽然你没有为它们制作的 Solr 索引,但它们可能给你一个更复杂的配置的外观以及它们的模板是如何设置的。项目包括

  • test:配置以演示此 Readme 的设置以及包含的视图辅助工具
  • gbv:一个大型图书馆索引的基本配置,具有多个搜索字段和标签,但没有自定义显示
  • hans:一个较小的图书馆索引的简单配置,具有多个搜索字段、标签和略微自定义的模板
  • jfk-institut-zeitungen:具有单个搜索字段、一个非平凡标签和没有详细视图的自定义模板的简单配置
  • Edfu:具有两个搜索字段、两个标签和高度自定义显示的详细配置
  • Germania Sacra:具有许多搜索字段、标签、数据导出、复杂查询和高度自定义显示的详细配置

这些项目以通用方式(可能只存在文件夹/文件的子集)结构化

  • projectname.ts:设置用到的TypoScript配置

  • Templates/Search

    • 用于显示的Index.html和Detail.html
    • 用于加载数据的Index.data和Detail.data
    • Suggest.data用于自动完成/建议响应
  • 局部模板:您也可以在这里添加自己的局部模板。可以通过在此处放置替换内容来配置扩展以覆盖内置的局部模板。扩展的局部模板在以下文件夹中

    • 组件:用于创建页面的元素
    • 显示:为文档中的字段创建标记
    • 分面:创建分面
    • 格式:数据格式使用的各种输出格式
    • 页面:要添加到页面中的标准元素
    • 分页器:为结果列表创建分页器
  • 语言:本地化文件或指向扩展本地化文件的符号链接

  • 资源:项目模板和局部模板使用的JavaScript、CSS、图像

TypoScript配置选项

本节中讨论的所有设置都位于TypoScript配置的plugin.tx_find.settings数组中。

连接到Solr索引

您可以有多个Solr连接。每个连接都需要使用一个提供者和一个选项数组。

plugin.tx_find.settings.activeConnection确定当前使用的连接。默认值为default

连接定义中的options设置数组用于配置对Solr索引的访问。它包含

  • host [127.0.0.1]:运行索引的服务器的主机名
  • port [8080]:服务器上Solr服务的端口
  • path [/solr/]:Solr服务器上索引的路径
  • timeout [5]:Solr请求超时前的秒数
  • scheme [http]:连接的URI方案
  1. 示例
    plugin.tx_find.settings {
        connections {
            default {
                provider = Subugoe\Find\Service\SolrServiceProvider
                options {
                    host = 127.0.0.1
                    port = 8080
                    path = /solr/
                    timeout = 5
                    scheme = http
                }
            }
        }
    }
    

Solr组件

当使用Solr提供的eDisMax功能时,添加

  • features.eDisMax = 1

如果Solr版本低于8,则必须将设置plugin.tx_find.settings.luceneMatchVersion设置为所使用的较大版本(例如6或7)。默认设置为8,并影响魔法查询前缀(见https://lucene.apache.org/solr/guide/6_6/the-extended-dismax-query-parser.html#TheExtendedDisMaxQueryParser-Usingthe_magicfields__val_and_query)。

搜索表单

queryFields设置配置搜索表单。它是一个编号的数组,每个查询字段对应一个数组。查询字段根据其类型具有多个参数

  • id(必需):查询字段的id;这用于URL参数(tx_find_find[q][myID])和识别查询字段的本地化标签
  • type(必需):查询字段的类型;在Partials/Form/Fields中具有此名称的局部模板用于创建输入表单的字段;默认的局部模板集提供了文本、范围、隐藏、选择、选择分面和单选按钮选项,其中一些取决于控制器中的特定代码以创建正确的查询
  • query:一个sprintf字符串,包含此字段的Solr查询,例如title_search:%s;如果没有提供,则使用默认查询$id:%s(其中$idid字段的值);这允许您使用更复杂的查询(例如一次性查询多个字段或在查询中添加{!join}),它还支持多个参数(见范围类型);
  • extended [0]:如果为真,查询字段将仅在扩展搜索表单中可见
  • noescape [0]:如果为真,扩展将不会在查询索引之前转义用户输入;这允许技术知识渊博的用户运行他们自己的Solr查询;但它会打开用户意外输入无效查询的风险,这将导致Solr异常(标准设置会捕获并为用户提供运行转义查询的链接)。如果noescape为2,您可以使用escapechar配置将被转义字符。
  • escapechar [""]: escapechar定义了当noescape为2时将被转义的字符。
  • phrase [0]: 如果为true,字段中的字符串在被放入Solr查询之前将进行短语转义,而不是术语转义。
  • hidden [0]: 如果为true,输入字段将不会显示;但如果通过搜索参数传递了该字段的术语,则字段将显示。

默认配置为索引0设置了id为default的通用文本查询,以及用于传输搜索表单状态的索引10001的隐藏字段id为extended,还有一个用于原始Solr查询的索引10002的文本字段id为raw。请注意这些配置,以便您可以根据需要覆盖或删除它们。

某些搜索字段类型具有自定义行为和特定配置选项。

示例

plugin.tx_find.settings.queryFields {
    10 {
        id = name
        type = Text
        query = %s
        noescape = 2
        escapechar = \,+,-,&,|,!,{,},[,],?,:
    }
}

文本

文本字段可以是最简单的字段之一。它还可以通过添加自动完成或复选框来选择替代查询样式来允许高级行为。

  • queryAlternate:一个可以为文本类型配置的替代查询数组;它会在输入字段旁边创建一个复选框,在提供的query和第一个queryAlternate之间切换。
  • autocomplete [0]: 如果为true,则将使用Solr建议查询将文本类型的字段连接到自动完成。
  • autocompleteDictionary:Solr建议查询应使用的字典名称。
  • default:如果用户(尚)未提供值时在查询中使用的默认值;可能是一个单个值字符串(例如,用于复选框的默认状态)或一个数组(特别适用于范围查询)。

示例

plugin.tx_find.settings.queryFields {
    10 {
        id = name
        type = Text
    }
    11 {
        id = name2
        type = Text
        query = name:%1$s
        queryAlternate.1 = name:%1$s~0.7
        noescape = 1
    }
    12 {
        id = name3
        type = Text
        autocomplete = 1
        autocompleteDictionary = name
    }
}

范围

范围字段为q.{fieldInfo.id}.0和q.{fieldInfo.id}.1创建了两个文本输入。如果您的索引具有fromto字段,则可以使用类似于from:[* TO %2$s] AND to:[%1$s TO *]的查询。例如。

plugin.tx_find.settings.queryFields.20 {
    id = year
    type = Range
    query = from:[* TO %2$s] AND to:[%1$s TO *]
    default.0 = *
    default.1 = *
}

隐藏

隐藏字段创建了一个类型为hidden的输入元素,通过表单传递额外的参数。例如。

plugin.tx_find.settings.queryFields.30 {
    id = hidden
    type = Hidden
    default = surprise
}

选择

选择字段创建了一个弹出菜单。弹出菜单是通过options设置的,默认选择的键在key中。例如。

plugin.tx_find.settings.queryFields.40 {
    id = country
    type = Select
    options {
        blank =
        key = value
        key2 = value2
    }
    default = key
}

选择分面

选择分面字段使用已加载的分面数据创建了一个弹出菜单。为此,分面需要被配置,并且其id必须设置为facetID参数。例如。

plugin.tx_find.settings {
    queryFields.50 {
        id = status
        type = SelectFacet
        facetID = status
        query = status_facet:%s
    }
    facets.50 {
        id = status
        field = status_facet
        hidden = 1
        fetchMinimum = 0
    }
}

单选按钮

options数组中创建单选按钮。例如。

plugin.tx_find.settings {
    60 {
        id = version
        extended = 1
        type = Radio
        options {
            1 = Steak
            2 = Chicken
            3 = Pancake
        }
        default = 2
    }
}

默认显示字段

索引文档中的两个字段可以被指定为文档的标题和用于显示结果列表的摘要。这可以实现简单的初始配置,并且应该涵盖许多情况。如果您需要在结果列表中显示更复杂的信息,可以通过替换Display/Result部分或Index模板来实现。

plugin.tx_find.settings {
    standardFields {
        title = title
        snippet = detail
    }
}

默认查询

默认情况下,如果没有给出搜索词,将显示索引中的所有记录:用于此的查询是*:*。您可以更改此默认查询(例如,到一个没有结果的查询)。

plugin.tx_find.settings {
    defaultQuery = *:*
}

默认搜索运算符

如果您想更改默认搜索运算符,可以使用以下配置。

plugin.tx_find.settings {
    defaultQueryOperator = OR
}

分面

可以使用TypoScript中的facets设置配置分面。它是一个数字列表的数组。每个数组可以有以下键

  • id(必需):用于识别分面的ID
  • type [List]:要使用的分面类型(有关由扩展提供的类型,请参见下文)
  • field:用于分面的Solr字段,如果没有给出,则使用由id给出的字段
  • sortOrder [count]: 使用 index 可按字母顺序对分面条目进行排序,默认情况下分面项按结果数量排序
  • fetchMinimum [1]: 显示分面所需的最小条目数;如果条目数少于这个数量,则不会显示分面
  • fetchMaximum [100]: 要加载的最大分面条目数
  • query: 如果选择了分面,使用 sprintf 风格的格式化字符串作为过滤查询;默认情况下使用分面的字段与选定的术语一起使用
  • facetQuery: 用于创建特定分面的分面查询配置数组;每个数组都有 id 键来标识分面查询,以及 query 键来创建分面的 Solr 查询
  • selectedByDefault: 包含键 field value 和值 1 的数组,用于指示在未提供分面选择时应选择哪些分面术语(尤其适用于 Tabs 分面类型)。
  • excludeOwnFilter [0]: 如果设置为 1,则分面本身创建的过滤器在计算其项的结果计数时将不会使用
  • hidden [0]: 是否隐藏分面以供显示(例如,在页面的其他部分(如 SelectFacet 查询字段)中使用分面数据)
  • showMissing[0]: 如果设置为 1,则分面显示缺失值的文档的项
  • labelMissing: 为缺失分面项设置自己的标签

要更改这些字段的默认值,您可以使用 facetsDefaults 设置并在其中设置您首选的默认值。

提供的分面类型由 Partials/Facets/Facet 中的部分提供。使用为分面配置的 type 来选择部分。

列表

这是一个默认分面列表,显示分面名称和其后跟的结果计数。您可以使用 CSS 隐藏结果计数,如果不需要它。

  • displayDefault [6]: 默认显示的分面项数量(其余项最初是隐藏的,用户可以将其揭示出来)
  • autocomplete: 是否在分面项上方提供自动完成搜索字段(对于具有许多项的分面很有帮助)。自动完成功能使用 jQuery.chosen 库。请确保下载它并随您的页面一起提供,例如,通过在 TypoScript 中的 page.includeJS 后添加文件路径。
  • sortPrefixSeparator: 该字符串用于将分面名称拆分为两部分,并仅显示第二部分;这样,您可以按第一部分(例如,使用零填充的数字)进行排序,同时仍然有良好的分面名称外观

示例

plugin.tx_find.settings.facets {
    10 {
        id = orden
        field = orden_facet
        autocomplete = 1
    }
    20 {
        id = band
        field = band_facet
        sortOrder = index
        displayDefault = 8
        sortPrefixSeparator = ####
    }
}

选项卡

选项卡 风格是普通列表的轻微变化。正如其名所示,它可用于在搜索结果上方创建“选项卡”,允许用户选择数据的某个子集的视图。这可以特别有用,与预定义的分面查询一起定义所需的子集。

您必须自己将此类型分面的部分添加到模板中,使其显示在页面顶部。在这样做时,使用 hidden 设置以确保它不会与其他分面一起显示。启用 excludeOwnFilter 设置将确保您获得未当前选中的分面项的正确结果计数。

示例:具有四个特定文档“typ”值分面查询的选项卡分面,默认选择“formular”选项

plugin.tx_find.settings.facets {
    30 {
        id = typ
        excludeOwnFilter = 1
        type = Tabs
        hidden = 1
        selectedByDefault {
            formular = 1
        }
        facetQuery {
            10 {
                id = formular
                query = typ:formular
            }
            20 {
                id = wort
                query = typ:wort
            }
            30 {
                id = gott
                query = typ:gott
            }
            40 {
                id = ort
                query = typ:ort
            }
        }
    }
}

直方图

这个分面是为数值字段设计的。它将绘制直方图以可视化索引中每个数字的结果数量。这是一种可视化“年份”分面的好方法。

通常情况下,您希望直方图分面设置一个较高的 fetchMaximum 参数。将 excludeOwnFilter = 1 设置后,不会像通常那样从分面中移除过滤值,而是保留之前的直方图并突出显示所选范围。

  • barWidth:直方图中每个柱状图的“宽度”;如果您覆盖了较宽的数值范围,将柱状图分组在更宽的范围内可能更有意义;这样做需要已经包含舍入数据的索引(例如,十年数的舍入值而不是精确的年份)

示例

plugin.tx_find.settings.facets {
    40 {
        id = decade
        field = decade
        type = Histogram
        excludeOwnFilter = 1
        sortOrder = index
        fetchMaximum = 1000
        barWidth = 10
    }
}

直方图分面使用来自 flotcharts 的 jQuery.flot 和 jQuery.flot.selection 库 0.8.3。请确保下载它们,并在您的页面上提供,例如,在 jQuery 之后添加文件路径到 TypoScript 中的 page.includeJS

地图

此分面创建了一个小型的 Google 地图,该地图由包含特定格式 geohashes 的 Solr 字段组成。请查看 Partials/Facets/Facet/Map.html 分面以获取详细信息。(这还可以在许多方面进行改进。)

示例

plugin.tx_find.settings.facets {
    50 {
        id = map
        field = geohash
        type = Map
        sortOrder = index
        fetchMaximum = 1000
    }
}

排序

可以使用 sort 设置来配置排序行为。它是一个包含字段 idsortCriteria 的数组数组。后者是 Solr 排序顺序字符串,即形式为 fieldName [a|de]sc 的逗号分隔列表。默认排序顺序的 id 应该是 default

如果数组有几个元素,则会在用户界面中添加一个用于选择排序顺序的下拉菜单。

示例

plugin.tx_find.settings.sort {
    1 {
        id = default
        sortCriteria = year desc,name asc
    }
}

分页

使用 paging 设置来调整结果中的导航。在此数组中,您可以设置:

  • perPage [20]:每页的结果数
  • menu [array()】:用于创建用户可以从中选择每页结果数的数字数组
  • maximumPerPage [1000]:从 Solr 获取的最大结果数,即使查询请求了更多的结果
  • detailPagePaging [1]:如果为 1,则启用搜索详细页之间的分页

示例

plugin.tx_find.settings.paging {
    perPage = 100
    maximumPerPage = 1000
    detailPagePaging = 1
}

详细页分页

detailPagePaging 选项启用了一个功能,允许在 RealURL 使用的页面对应于您的 Solr 文档时具有漂亮的、唯一的 URL,并且能够在结果详细页与之前和之后的详细页之间进行分页。

这是通过在 URL 中发送有关先前查询的信息以及请求的记录 ID 实现的。此解决方案的缺点是使用浏览器的后退按钮可能会触发“您确定要再次提交此表单吗?”对话框。如果您不需要在详细页之间进行分页,请关闭此选项。

URL 参数

您还可以使用 countposition 参数在服务器回复中设置结果数和初始文档。将受到 maximumPerPage 设置的限制。

排除文档

如果您的索引包含不应显示的文档(例如,因为它们尚未发布或因为您正在使用它们进行搜索但使用 {!join} 将它们与其他文档合并以显示),则可以使用 additionalFilters 设置添加过滤查询。该设置是一个具有过滤查询值的数组

plugin.tx_find.settings.additionalFilters {
    1 = published:true
}

选择要获取的字段

默认情况下,将加载完整的 Solr 文档并可以使用其所有字段。如果您的文档非常大或您想避免不必要的突出显示,则明确指定要获取的字段可能很有用。dataFields 设置允许您这样做。它有四个部分 defaultindexdetaildata。扩展程序将使用 default 中配置的字段开始,并添加用于所使用的操作的数组中给出的字段。

每个部分都是一个数组,包含键 default(再次)、allowdisallow。通常你只需要使用 default 数组,但其他键可以用来强制添加字段或明确禁止输出字段。请注意,这并不能保证用户无法看到这些字段,因为可能会受到各种操作或字段名称通配符的影响。你还可以在操作URL中使用 data-fields 参数来覆盖 default 配置。由于技术原因,字段键需要以字母开头而不是仅是数字(例如,使用 f1 而不是 1)。

示例配置:默认只加载最小字段,为 detaildata 操作加载所有字段

plugin.tx_find.settings {
    dataFields {
        default {
            default {
                f0 = id
                f1 = kloster
            }
        }
        detail {
            default {
                f0 = *
            }
        }
        data < plugin.tx_find.settings.dataFields.detail
    }
}

高亮显示

Solr 结果高亮显示是通过 highlight 设置来配置的。类似于 dataFields 设置,它包含数组 defaultindexdetaildata。每个数组都可以包含以下字段

  • fields [{f1 = *}]: 字段名称数组;由于技术原因,其键应以前缀字母开始(即 f1 而不是 1
  • fragsize [100]: 高亮片段的最大长度
  • query: 用于高亮的自定义 sprintf 风格查询模板,例如在最简单的情况下 [%s]
  • useQueryTerms [0]: 设置为 1 以创建来自搜索表单的每个查询词的高亮查询
  • useFacetTerms [0]: 设置为 1 以创建每个选定的分面词的高亮查询
  • alternateFields: 包含字段名称的键和对应替代字段名称的值的数组,在高亮显示无法在字段本身中工作时使用

请注意,尤其是最后三个选项似乎还不理想,并且被视为实验性的。将来可能需要更改以使这些选项在复杂情况下更加灵活。

示例:默认只高亮显示少数字段,为 detail 操作高亮显示更广泛的字段。由于它用于 {!join} 查询,因此查询和分面的术语将显式添加到高亮查询中

plugin.tx_find.settings.highlight {
    default {
        fields {
            f1 = kloster
        }
        query = %s
        useQueryTerms = 1
        useFacetTerms = 1
    }
    detail {
        fields {
            f2 = patrozinium
            f3 = ort
            f4 = bistum
            f5 = land
            f6 = orden
            f7 = bemerkung_kloster
        }
    }
}

链接到数据字段

当使用 Partials/Display/Field/Content 部分显示字段内容时(或使用它的同辈,它们使用它),可以提供 linkFieldContent 参数,不仅显示字段内容,而且插入一个链接以搜索该字段中具有相同值的所有文档。在不进行进一步配置的情况下,这将创建一个 raw 查询,用户可能会看到 Solr 查询。可能更希望隐藏 Solr 查询语法,并为此 Solr 字段定义一个(可能是 hidden)查询字段,然后只需将该字段填入术语。

queryFieldForDataField 设置是一个数组,包含 Solr 字段名称和创建这些查询所需的 queryFields 的 ID

示例

plugin.tx_find.settings {
    queryFields {
        100 {
            id = city
            type = Text
            hidden = 1
            phrase = 1
        }

    queryFieldForDataField {
        city = city
    }
}

跳转到内容

默认情况下,扩展创建链接以跳转到目标页面上的扩展内容(#tx_find),以最大化可见空间用于搜索结果和可能否则浪费在页面标题上的信息。您可以使用 jumpToID 设置删除跳转锚点或选择页面上的另一个锚点(例如,以保留站点导航可见)

plugin.tx_find.settings.jumpToID = menu

JavaScript 和 CSS 资源

设置包括 JSPathsCSSPaths 数组,可以用来配置要添加到页面中的 JavaScript 和 CSS 文件。默认设置在 CSSPaths10 位置和 JSPaths10 位置配置文件。例如

plugin.tx_find.settings {
    CSSPaths.30 = EXT:find/Projects/test/Resources/test.css
    JSPaths.20 = EXT:find/Projects/test/Resources/test.js
}

jQuery 必须手动包含在您选择的 TypoScript PAGE 对象中。示例

page.includeJSFooterlibs.jquery = https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js
page.includeJSFooterlibs.jquery.external = 1
page.includeJSFooterlibs.jquery.integrity = sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=
page.includeJSFooterlibs.jqueryUi = https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.js
page.includeJSFooterlibs.jqueryUi.external = 1
page.includeJSFooterlibs.jqueryUi.integrity = sha256-T0Vest3yCU7pafRw9r+settMBX6JkKN06dqBnpQ8d30=

本地化

您可以将languageRootPath设置为指向您自己的Localisations文件夹。包含在扩展中的部分将在访问其本地化文件时尊重该路径。与部分和模板一样,链接一些默认的本地化文件并仅覆盖或添加您需要的额外术语可能很有用。

plugin.tx_find.settings.languageRootPath = EXT:find/Projects/test/Language/

包含的部分使用的本地化文件如下

  • locallang.xml:搜索界面的通用术语(默认文件)
  • locallang-form.xml:搜索表单的标签和占位符
  • locallang-facets.xml:面名称和面项名称
  • locallang-fields.xml:字段标签

请参阅这些文件中的初始注释,了解基于相应查询字段、面或字段的id创建本地化键的约定。

模板化

您可能想创建自己的模板和部分来定制搜索结果的显示,以便于索引内容。为此,创建一个类似包含示例项目的项目结构,链接您想要使用的扩展模板和部分,并覆盖/添加自己的。

扩展提供了大量视图助手和部分,在相关上下文中可能很有帮助。在Classes/ViewHelpersResources/Private/Partials文件夹中查看哪些工作已经为您完成。

大多数视图助手都包含在test项目的Test部分中的使用示例,并在设置完成后出现在其起始页上(搜索界面出现在这些示例之后)。

操作

该扩展提供三个操作

  • index:默认操作,执行搜索
  • detail:显示单个文档的操作(如果存在id参数则自动触发)
  • suggest:用于文本查询字段的自动完成设置

数据导出

创建数据导出需要以下设置

  • 设置一个没有HTML和所需MIME类型的TYPO3页面类型;扩展提供了一个用于JSON的类型1369315139
    tx_find_page = PAGE
    tx_find_page {
        typeNum = 1369315139
        10 < tt_content.list.20.find_find
        config {
            disableAllHeaderCode = 1
            additionalHeaders = Content-type:application/json;charset=utf-8
        }
    }
    
  • 创建一个使用pageType的链接,使用所需的format="data",并在查询中添加带有您想要格式的名称的data-format参数
  • Partials/Formats中为您的数据格式创建一个部分,并使用.data文件扩展名创建所需输出。

例如,对于JSON,扩展中提供了大量输出格式。germania-sacra项目包含额外的格式。

查询字符串参数

插件查询参数的形式为tx_find_find[parameterName]

标准参数

内置参数名称是

  • id:要在详细操作中显示的文档的Solr文档ID;存在id参数将始终触发详细操作
  • q:用于查询;这是一个数组,键是查询字段ID,例如tx_find_find[q][default]=term;一些查询字段类型(例如范围)使用数组作为它们的值来覆盖它们的输入值
  • facet:用于所选面;这是一个数组,键是面ID,值是数组;这些数组有键是面术语和值1,例如tx_find_find[facet][typ][formular]=1
  • page:要显示的结果页(基于1)
  • extended:是否显示扩展搜索表单
  • sort:要使用的排序顺序

特殊参数

这些参数通常不会公开,但在通过扩展提供数据导出时可能很有用,特别是在使用数据操作时。

  • start:在结果集中开始文档索引的位置
  • count:请求Solr的文档数量(受paging.maximumPerPage设置的限制)
  • data-format:当使用data格式时,将使用此Partials/Formats中的文件创建输出

POST参数

  • underlyingQuery:底层查询信息,当开启paging.detailPagePaging时,通过POST请求体发送;它可能包含qfacetpositioncountsort键。

日志记录

使用TYPO3 日志管理器。如果没有对find-logging进行特殊配置,日志条目可以在TYPO3日志中的find组件键下找到,即:

06 Jun 2016 06:36:06 +0000 [ERROR] request="e2737b83ada7d" component="find": Solr 异常(超时?)

RealURL

该扩展包含一个用于RealURL自动配置的钩子。它主要通过使用id/documentID路径段来处理详细视图的参数名称。

查询和分面查询的URL不会美化,并且如果需要,将需要手动配置,因为查询参数名称取决于用于字段和分面的id

先决条件

  • TYPO3 10.4
  • PHP 7.4或更高版本

测试

要运行单元测试,请克隆此存储库,然后运行

  • composer install
  • .Build/bin/phpunit --colors -c .Build/vendor/nimut/testing-framework/res/Configuration/UnitTests.xml Tests/Unit/

贡献

在Github上提交一个pull request。

确保在查看是否满足编码风格规范之前运行composer lint。如果不满足,可以使用composer fix自动修复。

构建CSS文件

安装Node.js(版本16或更高),运行npm install,然后使用npm run build构建最终的CSS文件。

联系方式

致谢

扩展的Solr连接由Solarium PHP Solr客户端提供