labor-digital / typo3-search-and-index
为TYPO3记录提供快速、分面的搜索引擎,如需可创建完整的XML站点地图
Requires
- labor-digital/typo3-better-api: ^10.35.0
- thepixeldeveloper/sitemap: ^5.1
README
此包提供了一种强大、可分面、语言和领域感知的基于PHP的搜索实现。搜索使用智能SQL查询在毫秒内执行复杂、模糊搜索。为了提供高性能,搜索在TYPO3安装中所有内容的索引上执行。搜索可以轻松处理自定义记录类型,使用基于类的、可扩展的索引算法。已实现页面索引的索引任务。
基于索引,您还可以生成完整的XML站点地图。
需求
- TYPO3 v10
- TYPO3 - 更好的API
- 使用Composer安装
安装
使用composer安装此包
composer require labor-digital/typo3-search-and-index
之后,您可以在TYPO3安装的扩展管理器中激活此扩展
文档
您可以在T3BA示例存储库的T3SAI分支中找到已记录的实现。
运行索引器
要运行索引器,可以使用"t3sai:indexer"命令行命令,或者创建一个新的调度任务使用"Search and Index - Indexer"类。您也可以通过在代码中使用" LaborDigital\T3sai\Core\Indexer\Indexer"类来运行索引器。
提供的路由
- GET /t3sai/sitemap.xml 提供基于请求主机名的站点地图(基于搜索索引生成)。
- POST /t3sai/autocomplete 提供生成Ajax自动完成功能的端点。只需将您的输入字符串作为"search"(表单数据)POST,即可接收自动完成结果的JSON列表。您还可以发送一个域名标识符作为"domain"以缩小自动完成结果。
T3FA集成
如果您正在使用TYPO3前端API扩展,则提供的路由将自动禁用!
相反,您可以在运行搜索、部署sitemap.xml或解析自动完成结果时利用T3FA提供的API功能。
搜索包
搜索包包括两个资源,可以用于通过API完全访问搜索索引。
注册包如下
<?php namespace Vendor\Extension\Configuration\ExtConfig\Site\Main; use LaborDigital\T3fa\ExtConfigHandler\Api\BundleCollector; use LaborDigital\T3fa\ExtConfigHandler\Api\ConfigureApiInterface; use LaborDigital\T3sai\Api\Bundle\SearchBundle; class Api implements ConfigureApiInterface { public static function registerBundles(BundleCollector $collector): void { $collector->register(SearchBundle::class); } }
GET /api/resources/t3sai_search
此路由可用于检索提供的输入字符串的搜索结果。您可以使用默认的"page"参数进行分页。
此外,还有以下参数
- input (字符串) 必需:要找到结果的urlencoded输入字符串
- L (整数|字符串):可以是两个字符的iso语言代码或sys语言uid,以找到结果。如果省略,则使用当前前端语言。
- tags (字符串):一个逗号分隔的标签列表,其中必须可找到结果
- domain (字符串):要查找结果的特定搜索域的标识符
- site (字符串):默认情况下,将使用当前TYPO3站点进行搜索。此选项可用于针对特定站点。
- maxTagItems (整数):每个标签应返回的条目限制
- contentMatchLength (整数):定义"contentMatch"字段在结果中可以包含的字符数
- with (字符串):解析结果时的附加标志的逗号分隔列表。
- count:如果提供,将返回结果中每个标签的项目计数的列表,在“meta”数组中。
- tags:如果提供可用的标签列表及其翻译,将返回这些信息。
GET /api/resources/t3sai_autocomplete
此路由可用于检索针对提供的输入字符串的自动完成建议。您可以使用默认的“page”参数进行结果分页。
如果输入的最后一个字符是空格(" "),则将返回下一个单词的建议;如果最后一个字符是普通字符,则将返回完成当前单词的建议。
此外,还有以下参数
- input (字符串) 必需:要找到结果的urlencoded输入字符串
- L (整数|字符串):可以是两个字符的iso语言代码或sys语言uid,以找到结果。如果省略,则使用当前前端语言。
- domain (字符串):要查找结果的特定搜索域的标识符
- site (字符串):默认情况下,将使用当前TYPO3站点进行搜索。此选项可用于针对特定站点。
站点地图组件
站点地图组件提供 /api/sitemap.xml 路由。
注册包如下
<?php namespace Vendor\Extension\Configuration\ExtConfig\Site\Main; use LaborDigital\T3fa\ExtConfigHandler\Api\BundleCollector; use LaborDigital\T3fa\ExtConfigHandler\Api\ConfigureApiInterface; use LaborDigital\T3sai\Api\Bundle\SitemapBundle; class Api implements ConfigureApiInterface { public static function registerBundles(BundleCollector $collector): void { $collector->register(SitemapBundle::class); } }
GET /api/sitemap.xml
返回基于请求主机的XML站点地图(基于搜索索引生成)。
明信片软件
您可以使用此软件包,但如果它进入您的生产环境,我们非常希望您能从您的家乡寄给我们一张明信片,注明您正在使用我们哪个软件包。
我们的地址是:LABOR.digital - Fischtorplatz 21 - 55116 Mainz, Germany
我们将公布收到的所有明信片在我们的公司网站上。