jonaskohl/php-search

一个基于 Lucene 的 PHP 搜索引擎库

1.1.3 2022-04-04 15:06 UTC

README

本搜索引擎的一个小型演示示例可供在此处使用 这里。此演示使用了来自 2006 年和 2016 年的 1000 部电影数据集。结果将随着您输入而提供。

安装

使用 Composer 安装此库

composer require vfou/php-search 1.1

它能做什么?

简而言之

  • 索引和搜索文档(带分数、模糊搜索和分词)
  • 支持 12 种语言的词干提取和停用词
  • 分面搜索
  • 自动补全
  • 关联搜索

查看功能页面以获取更完整的列表

快速入门

搜索引擎附带示例模式,可让您快速上手库。

首先,您需要加载搜索引擎。

use VFou\Search\Engine;

$engine = new Engine();

您可以将一个数组作为类的构造函数的参数,有关更多信息,请参阅 维基中的配置页面

通过构建引擎,您的索引文件旁边将出现一些目录

  • var/engine/index
  • var/engine/documents
  • var/engine/cache

(所有这些目录都可以通过配置数组进行更改)

首先,您需要向引擎提供一些要搜索的内容。我们将创建一些文档,并要求引擎对它们进行索引。

$doc = [
    "id" => 1,
    "type" => "example-post",
    "title" => "this is my first blog post !",
    "content" => "I am very happy to post this first post in my blog !",
    "categories" => [
        "party",
        "misc."
    ],
    "date" => "2018/01/01",
    "comments" => [
        [
            "author" => "vincent",
            "date" => "2018/01/01",
            "message" => "Hello world!"
        ],
        [
            "author" => "someone",
            "date" => "2018/01/02",
            "message" => "Welcome !"
        ]
    ]
];
$engine->update($doc);
$doc = [
    "id" => 2,
    "type" => "example-post",
    "title" => "This is the second blog post",
    "content" => "a second one for fun",
    "date" => "2018/01/05",
    "categories" => [
        "misc."
    ],
    "comments" => [
        [
            "author" => "someone",
            "date" => "2018/01/05",
            "message" => "Another one ?!"
        ]
    ]
];
$engine->update($doc);

注意:您也可以将这些两个文档放入一个数组中,并使用 updateMultiple() 函数一次性对多个文档进行索引。

现在您的文档已索引,您可以使用搜索功能并获取结果

$response = $engine->search('second post');
var_dump($response);

$response = $engine->search('post');
var_dump($response);

有关此库的更多信息,例如使用更多高级功能,请访问 此存储库的维基页面

管理面板

⚠️ 警告:此面板本身不处理任何安全措施。如果您使用它,防止公众访问的责任在于您自己!

管理面板是一个需要实例化然后运行的类。它不是一个可调用的文件,因此您需要通过常规 PHP 文件来调用它。

<?php

use VFou\Search\AdminPanel;

// include the composer autoload file, modify the path if needed
require "vendor/autoload.php";

// securize your file access or directly here
// if($_SERVER['REMOTE_ADDR'] != "127.0.0.1") exit('unauthorized');

// instantiate the panel and then run it
$admin = new AdminPanel();
echo $admin->run();

管理面板的构造函数接受与您用于实例化引擎相同的配置数组作为第一个参数,如果您已自定义模式,则希望传递它。(否则面板将无法正常工作)

更多详细信息请参阅 管理面板手册

许可证

此库采用 MIT 许可证。 查看完整许可证