>  기사  >  백엔드 개발  >  PHP 및 SQLite를 사용하여 전체 텍스트 검색 및 인덱싱을 수행하는 방법

PHP 및 SQLite를 사용하여 전체 텍스트 검색 및 인덱싱을 수행하는 방법

PHPz
PHPz원래의
2023-07-28 18:17:071718검색

전체 텍스트 검색 및 인덱싱을 위해 PHP 및 SQLite를 사용하는 방법

소개:
인터넷 정보가 폭발적으로 증가함에 따라 전체 텍스트 검색은 대용량 데이터를 처리하는 중요한 수단 중 하나가 되었습니다. 웹사이트나 애플리케이션을 개발할 때 사용자가 필요한 정보를 빠르게 찾을 수 있도록 전체 텍스트 검색 기능을 구현해야 하는 경우가 많습니다. 이 기사에서는 PHP와 SQLite를 사용하여 전체 텍스트 검색 및 인덱싱 기능을 구현하는 방법을 자세히 소개합니다.

1. SQLite 설치 및 구성

먼저 SQLite 데이터베이스를 설치해야 합니다. 공식 웹사이트(https://www.sqlite.org/)에서 사용 중인 시스템에 적합한 버전을 다운로드하여 설치할 수 있습니다. 설치가 완료된 후 PHP에서 SQLite 확장을 사용할 수 있도록 SQLite용 PHP 확장을 PHP 구성 파일(php.ini)에 추가해야 합니다. 구성 파일에 다음 내용을 추가합니다.

extension=sqlite3.so // Linux
extension=php_sqlite3.dll // Windows

구성 파일을 저장하고 웹 서버를 다시 시작하여 구성이 적용되는지 확인하세요.

2. SQLite 데이터베이스 및 데이터 테이블 만들기

전체 텍스트 검색 및 인덱싱을 구현하기 전에 먼저 SQLite 데이터베이스를 준비하고 데이터를 저장할 데이터 테이블을 만들어야 합니다. 터미널 또는 명령 프롬프트를 열고 프로젝트 디렉터리로 이동한 후 다음 명령을 실행하여 데이터베이스 및 데이터 테이블을 생성합니다.

sqlite3 mydatabase.db

CREATE TABLE Articles (

id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT,
content TEXT

);

SQLite를 저장하고 종료합니다. 단말기.

3. 데이터 삽입

일부 기사 데이터를 시뮬레이션하고 전체 텍스트 검색 및 색인 생성을 위해 데이터베이스에 삽입합니다. PHP 코드에서는 다음 코드를 사용하여 데이터를 삽입할 수 있습니다:

70b0fcd75b7959217522a78607aac88bsetAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$articles = [

['title' => '使用PHP进行全文搜索', 'content' => '在PHP中,我们有几种方法可以实现全文搜索功能。'],
['title' => 'PHP和SQLite全文搜索的厉害之处', 'content' => 'PHP和SQLite是一对绝佳的组合,它们可以轻松地实现全文搜索和索引功能。'],
// 更多文章...

];

foreach ($articles as $article) {

$sql = "INSERT INTO articles (title, content) VALUES (:title, :content)";
$stmt = $pdo->prepare($sql);
$stmt->execute($article);

}

?>

위 코드는 연결할 PDO 인스턴스를 생성합니다. SQLite 데이터베이스를 사용하고 준비된 문을 사용하여 데이터 테이블에 데이터를 삽입합니다. 필요에 따라 더 많은 기사 데이터를 삽입할 수 있습니다.

4. 전체 텍스트 검색 및 색인 사용

SQLite에서는 전체 텍스트 검색 및 색인을 사용하여 전체 텍스트 검색을 구현할 수 있습니다. 먼저 검색 속도를 높이기 위해 전체 텍스트 인덱스를 만들어야 합니다. 기사의 제목 및 내용 열에 대한 색인을 생성할 수 있습니다. 다음 SQL 문을 실행하여 인덱스를 생성합니다.

CREATE VIRTUAL TABLE Articles_fts USING FTS5(title, content);

다음으로 원본 데이터 테이블의 데이터를 전체 텍스트 인덱스로 복사하고 인덱스를 일관되게 유지해야 합니다. 원본 데이터와 동기화합니다. 이를 달성하려면 다음 SQL 문을 실행하십시오.

INSERT INTO Articles_fts(articles_fts) VALUES('rebuild');

이렇게 하면 전체 텍스트 인덱스가 원본 데이터와 동기화된 상태로 유지됩니다. 다음으로, 다음 코드를 사용하여 전체 텍스트 검색을 수행할 수 있습니다:

70b0fcd75b7959217522a78607aac88bsetAttribute(PDO:: ATTR_ERRMODE, PDO ::ERRMODE_EXCEPTION);

$search = "PHP 전체 텍스트 검색";
$sql = "SELECT * FROM Articles_fts WHERE content MATCH :search OR title MATCH :search";
$stmt = $pdo-> prepare($sql );
$stmt->bindParam(':search', $search, PDO::PARAM_STR);
$stmt->execute();

$results = $stmt->fetchAll( PDO::FETCH_ASSOC );

foreach ($results as $result) {

echo "标题:{$result['title']},内容:{$result['content']}

";
}

?>

위 코드는 "PHP 전체 텍스트 검색"이라는 키워드가 포함된 기사를 검색하고 다음을 표시합니다.

결론:
이 기사에서는 PHP 및 SQLite를 사용하여 전체 텍스트 검색 및 인덱싱 기능을 구현하는 방법을 소개합니다. 전체 텍스트 검색을 구현하면 웹 사이트 또는 애플리케이션의 사용자 경험이 크게 향상될 수 있습니다. 이러한 방식으로 SQLite를 데이터베이스로 사용하여 웹 애플리케이션에서 전체 텍스트 검색 및 색인 기능을 쉽게 구현할 수 있습니다. 이 기사가 도움이 되기를 바랍니다.

위 내용은 PHP 및 SQLite를 사용하여 전체 텍스트 검색 및 인덱싱을 수행하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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