채택완료

전체검색 게시판출력

2023-11-29 (수) 14:06:42 2,375

3695309446_1701234117.7879.png

게시판이 방대해지면 게시판 찾기가 어려워지는데

전체검색창에 연관단어를 입력했을때 게시판이 나오게 구현을 어떻게 하는건가요?

그누보드의 발전을 기원합니다.

|

답변 2개 / 댓글 7개

채택된 답변
+20 포인트
2023-11-29 (수) 16:06:20

참고하셔서 원하시는 형식으로 구현하시면 되지 않을까 합니다.

Elasticsearch-PHP 라이브러리 설치

Copy
composer require elasticsearch/elasticsearch
Copy
<?php

require 'vendor/autoload.php';

// Elasticsearch 연결 설정
$hosts = [
    [
        'host' => 'localhost',
        'port' => 9200,
    ],
];

$client = Elasticsearch\ClientBuilder::create()
    ->setHosts($hosts)
    ->build();

// 인덱스 생성 (실제로는 필요에 따라 이미 생성된 인덱스를 사용해야 합니다.)
$indexParams = [
    'index' => '게시판인덱스',
    'body' => [
        'settings' => [
            'number_of_shards' => 1,
            'number_of_replicas' => 0,
        ],
    ],
];

$client->indices()->create($indexParams);

// 게시판 데이터 샘플 입력
$게시판데이터 = [
    ['게시판이름' => '기술게시판', '게시판내용' => '프로그래밍 관련 정보 공유'],
    ['게시판이름' => '여행게시판', '게시판내용' => '여행지 추천과 경험 공유'],
    ['게시판이름' => '요리게시판', '게시판내용' => '레시피 공유와 요리 팁'],
];

// Elasticsearch에 데이터 색인
foreach ($게시판데이터 as $idx => $data) {
    $params = [
        'index' => '게시판인덱스',
        'type' => '_doc',
        'id' => $idx + 1,
        'body' => $data,
    ];

    $client->index($params);
}

// 전체검색 함수
function 전체검색($연관단어)
{
    global $client;

    // Elasticsearch 쿼리 작성
    $검색쿼리 = [
        'index' => '게시판인덱스',
        'body' => [
            'query' => [
                'multi_match' => [
                    'query' => $연관단어,
                    'fields' => ['게시판이름', '게시판내용'],
                ],
            ],
        ],
    ];

    // Elasticsearch에서 검색 실행
    $검색결과 = $client->search($검색쿼리);

    // 검색 결과 반환
    return $검색결과['hits']['hits'];
}

// 사용자가 입력한 연관단어
$사용자입력 = '기술';

// 전체검색 실행
$결과 = 전체검색($사용자입력);

// 결과 출력 또는 처리
foreach ($결과 as $hit) {
    print_r($hit['_source']);
}

답변에 대한 댓글 6개

와우 정성 감사합니다 코딩초보라 elasticsearch-8.11.1 다운받았지만 어떻게 시작을 해야할지..
로컬 환경에서 Elasticsearch-PHP 라이브러리를 Composer를 통해 설치한 후, 필요한 파일을 호스팅 계정으로 업로드하시면 사용하실 수 있습니다.
자세한 사용법은 구글링이나 해당 관련문서를 참조하시면 됩니다.
해당 영상도 도움이 될 수 있습니다. 기본부터 들으시면 될 것 같습니다.
감사합니다 웹메이킹님. 기본부터 다지고 오겠습니다.!
2023-11-29 (수) 14:11:48

새 글 게시판에서 구현을 하거나 새글 게시판은 일정 기간만 보관을 해서 새 글 게시판과 같이 통합된 정보를 저장하는 테이블을 만들고 해당에서 검색을 하셔야 합니다. 그누는 다 따로 테이블이 있어서 조인으로 합쳐서 하기에는 힘듭니다.

답변에 대한 댓글 1개

새글출력은 힘들어서 게시판만 나오게 하려고 합니다 냑사이트에 예제를 참고해보려했지만 어디에도 나와있지 않네요 ㅠㅠ

답변을 작성하려면 로그인이 필요합니다.