[파이썬] Flask에서의 텍스트 검색 기능

Flask는 파이썬 웹 프레임워크로, 다양한 웹 애플리케이션 개발에 사용됩니다. 이번 포스트에서는 Flask를 사용하여 텍스트 검색 기능을 구현하는 방법에 대해 알아보겠습니다.

1. 필요한 패키지 설치하기

먼저, 텍스트 검색 기능을 구현하기 위해 아래의 패키지를 Flask 프로젝트에 설치해야 합니다.

pip install Flask-WTF
pip install Flask-WhooshAlchemy
pip install Whoosh

2. 데이터베이스 설정하기

텍스트 검색 기능을 사용하기 위해서는 데이터베이스를 설정해야 합니다. 이 예제에서는 SQLite를 사용하도록 하겠습니다.

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'
db = SQLAlchemy(app)

3. 모델 생성하기

데이터베이스에 저장할 텍스트를 담을 모델을 생성해야 합니다. 이 예제에서는 ‘Post’ 모델을 사용하도록 하겠습니다.

from datetime import datetime

class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100))
    content = db.Column(db.Text)
    timestamp = db.Column(db.DateTime, default=datetime.utcnow)

    def __repr__(self):
        return f"<Post {self.title}>"

4. 텍스트 검색 기능 추가하기

텍스트 검색 기능을 추가하는 방법은 다음과 같습니다.

from flask import Flask, render_template, request
from flask_sqlalchemy import SQLAlchemy
from flask_whooshalchemy import whoosh_index

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'
app.config['WHOOSH_BASE'] = 'whoosh'

db = SQLAlchemy(app)
whoosh_index(app, Post)

@app.route('/')
def search():
    query = request.args.get('q')

    if query:
        posts = Post.query.whoosh_search(query).all()
    else:
        posts = []

    return render_template('search.html', posts=posts)

위의 코드에서 search() 함수는 / 경로에서 요청을 처리하는 함수입니다. 이 함수는 request 객체를 사용하여 검색어를 받아온 후, Post 모델의 whoosh_search() 메소드를 사용하여 텍스트 검색을 수행합니다.

5. HTML 템플릿 작성하기

마지막으로, 검색 결과를 보여줄 HTML 템플릿을 작성해야 합니다. search.html 파일을 생성하고 다음과 같이 작성해보세요.


<!DOCTYPE html>
<html>
<head>
    <title>Flask 텍스트 검색</title>
</head>
<body>
    <h1>Flask 텍스트 검색</h1>

    <form method="GET">
        <input type="text" name="q" placeholder="검색어를 입력하세요">
        <button type="submit">검색</button>
    </form>

    <ul>
        {% for post in posts %}
        <li>{{ post.title }}</li>
        {% endfor %}
    </ul>
</body>
</html>

이제 Flask 애플리케이션을 실행하고 브라우저에서 http://localhost:5000을 열어보세요. 검색어를 입력하고 검색 버튼을 클릭하면 검색 결과가 보여집니다.

이처럼 Flask에서는 간단하게 텍스트 검색 기능을 구현할 수 있습니다. 이를 활용하여 다양한 웹 애플리케이션을 개발해보세요!