>  기사  >  백엔드 개발  >  PHP 및 Elasticsearch에서 자동 완성 기능을 구현하는 방법

PHP 및 Elasticsearch에서 자동 완성 기능을 구현하는 방법

王林
王林원래의
2023-07-07 17:24:07965검색

PHP 및 Elasticsearch에서 자동 완성 기능을 구현하는 방법

소개:
자동 완성 기능은 최신 웹 애플리케이션의 일반적인 기능 중 하나입니다. 사용자 입력을 기반으로 관련 팁과 제안을 제공하여 사용자 경험과 검색 정확도를 향상시킵니다. Elasticsearch는 빠르고 확장 가능하며 효율적인 전체 텍스트 검색 기능을 제공하는 강력한 오픈 소스 검색 엔진입니다. PHP와 Elasticsearch를 결합하면 자동 완성 기능을 쉽게 구현할 수 있습니다.

단계:

  1. Elasticsearch 설치
    먼저 Elasticsearch가 서버에 설치되어 있는지 확인하세요. 설치 과정은 운영 체제에 따라 다릅니다. 설치 및 구성에 대해서는 Elasticsearch 공식 문서를 참조하세요.
  2. 인덱스 및 매핑 생성
    Elasticsearch에서는 데이터를 인덱스에 저장한 다음 매핑을 사용하여 필드의 유형과 속성을 정의해야 합니다. Elasticsearch의 REST API 또는 PHP용 Elasticsearch 클라이언트 라이브러리를 사용하여 인덱스와 매핑을 생성할 수 있습니다.
<?php
require 'vendor/autoload.php';

$client = ElasticsearchClientBuilder::create()->build();

$params = [
    'index' => 'my_index',
    'body' => [
        'mappings' => [
            'properties' => [
                'title' => [
                    'type' => 'text',
                    'analyzer' => 'standard',
                ],
            ],
        ],
    ],
];

$response = $client->indices()->create($params);

if ($response['acknowledged']) {
    echo 'Index created successfully';
}
?>

위의 코드 조각은 my_index라는 색인을 생성하고 title이라는 필드를 정의합니다. typetext로 설정되어 이 필드에 텍스트 데이터가 저장됨을 나타냅니다. analyzerstandard로 설정됩니다. 이는 전체 텍스트 검색에 표준 토크나이저를 사용한다는 의미입니다. my_index 的索引,并定义了一个名为 title 的字段。type 设置为 text,表示这个字段将存储文本数据。analyzer 设置为 standard,表示使用标准分词器进行全文搜索。

  1. 导入数据
    在索引和映射创建好之后,我们需要将数据导入到 Elasticsearch 中以供搜索。我们可以使用 Elasticsearch 的 REST API 或 PHP 的 Elasticsearch 客户端库来插入数据。
<?php
require 'vendor/autoload.php';

$client = ElasticsearchClientBuilder::create()->build();

$params = [
    'index' => 'my_index',
    'body' => [
        'title' => 'Elasticsearch',
    ],
];

$response = $client->index($params);

if ($response['result'] == 'created') {
    echo 'Data inserted successfully';
}
?>

上面的代码片段将一个文档插入到 my_index 索引中,文档的 title 字段的值为 "Elasticsearch"。

  1. 实现自动完成功能
    现在,我们已经有了数据和索引。接下来,我们需要编写 PHP 代码来实现自动完成功能。
<?php
require 'vendor/autoload.php';

$client = ElasticsearchClientBuilder::create()->build();

$params = [
    'index' => 'my_index',
    'body' => [
        'suggest' => [
            'my_suggestion' => [
                'text' => 'ela',
                'completion' => [
                    'field' => 'title',
                ],
            ],
        ],
    ],
];

$response = $client->suggest($params);

$suggestions = $response['suggest']['my_suggestion'][0]['options'];

foreach ($suggestions as $suggestion) {
    echo $suggestion['text']."
";
}
?>

上面的代码片段使用 suggest API 来获取与输入文本匹配的建议列表。在 text 字段中,我们传递用户的输入。在 completion 字段中,我们指定需要自动完成功能的字段。

总结:
通过结合 PHP 和 Elasticsearch,我们可以轻松实现自动完成功能。首先,我们需要安装 Elasticsearch 并创建索引和映射。然后,我们可以插入数据并使用 suggest

    데이터 가져오기🎜 인덱스와 매핑이 생성된 후 검색을 위해 데이터를 Elasticsearch로 가져와야 합니다. Elasticsearch의 REST API 또는 PHP용 Elasticsearch 클라이언트 라이브러리를 사용하여 데이터를 삽입할 수 있습니다. 🎜🎜rrreee🎜위 코드 조각은 문서의 title 필드 값이 "Elasticsearch"인 my_index 인덱스에 문서를 삽입합니다. 🎜
      🎜자동완성 기능 구현🎜이제 데이터와 인덱스가 생겼습니다. 다음으로, 자동 완성 기능을 구현하는 PHP 코드를 작성해야 합니다. 🎜🎜rrreee🎜위의 코드 조각은 suggest API를 사용하여 입력 텍스트와 일치하는 제안 목록을 가져옵니다. text 필드에 사용자의 입력을 전달합니다. completion 필드에서는 자동 완성 기능이 필요한 필드를 지정합니다. 🎜🎜요약: 🎜PHP와 Elasticsearch를 결합하면 자동 완성 기능을 쉽게 구현할 수 있습니다. 먼저 Elasticsearch를 설치하고 인덱스와 매핑을 생성해야 합니다. 그런 다음 데이터를 삽입하고 suggest API를 사용하여 자동 완성 제안을 받을 수 있습니다. 위에 언급된 단계와 샘플 코드는 Elasticsearch를 사용하여 PHP에서 자동 완성 기능을 구현하는 방법을 이해하는 데 도움이 됩니다. 🎜

위 내용은 PHP 및 Elasticsearch에서 자동 완성 기능을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.