전체검색 게시판출력

전체검색 게시판출력

QA

전체검색 게시판출력

본문

3695309446_1701234117.7879.png

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

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

 

 

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

이 질문에 댓글 쓰기 :

답변 2

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

 

Elasticsearch-PHP 라이브러리 설치


composer require elasticsearch/elasticsearch

 


<?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']);
}

 

 

로컬 환경에서 Elasticsearch-PHP 라이브러리를 Composer를 통해 설치한 후, 필요한 파일을 호스팅 계정으로 업로드하시면 사용하실 수 있습니다.
자세한 사용법은 구글링이나 해당 관련문서를 참조하시면 됩니다.

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

답변을 작성하시기 전에 로그인 해주세요.
전체 58,832
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT