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

1. 프로젝트 설정

먼저, Pyramid 프로젝트를 설정해야 합니다. Pyramidpip를 통해 설치할 수 있습니다:

pip install pyramid

프로젝트를 생성한 후, routes.py 파일에 URL 경로를 설정합니다. 예를 들어, /search 경로를 사용하여 검색 기능을 구현한다고 가정해보겠습니다:

from pyramid.config import Configurator

def search(request):
    # 검색 기능 구현
    ...
    
config = Configurator()
config.add_route('search', '/search')
config.add_view(search, route_name='search', renderer='json')
app = config.make_wsgi_app()

2. 텍스트 검색 기능 구현

이제 search 함수에서 텍스트 검색 기능을 구현할 차례입니다. 여러 가지 방법으로 검색 기능을 구현할 수 있지만, 여기서는 단순한 문자열 비교를 사용하여 검색 결과를 반환하는 예를 살펴보겠습니다:

def search(request):
    query = request.params.get('query')  # 검색어 가져오기
    documents = [...]  # 검색 대상 문서 목록
    
    results = []
    for doc in documents:
        if query in doc:
            results.append(doc)
    
    return {'results': results}

위의 코드에서 query 변수를 통해 검색어를 가져오고, documents 리스트를 통해 검색 대상 문서를 지정합니다. 그런 다음, for 루프를 통해 각 문서를 순회하면서 검색어와 일치하는지 확인합니다. 매칭되는 문서는 results 리스트에 추가되고, 최종적으로 results를 반환합니다.

3. 검색 인터페이스 구성

마지막으로, 사용자가 검색어를 입력할 수 있는 간단한 검색 인터페이스를 구성해야 합니다. HTML 폼을 사용하여 검색어를 입력하고, 해당 폼을 서버로 제출하여 검색 결과를 받을 수 있습니다:

<!DOCTYPE html>
<html>
<head>
    <title>텍스트 검색</title>
</head>
<body>
    <h1>텍스트 검색</h1>
    <form action="/search" method="GET">
        <input type="text" name="query" placeholder="검색어를 입력하세요" />
        <button type="submit">검색</button>
    </form>
    <div id="results"></div>
    
    <script>
        const form = document.querySelector('form');
        const resultsDiv = document.querySelector('#results');
        
        form.addEventListener('submit', (e) => {
            e.preventDefault();
            
            const query = form.query.value;
            
            fetch(`/search?query=${query}`)
                .then(response => response.json())
                .then(data => {
                    resultsDiv.innerHTML = '';
                    data.results.forEach(result => {
                        const p = document.createElement('p');
                        p.innerHTML = result;
                        resultsDiv.appendChild(p);
                    });
                });
        });
    </script>
</body>
</html>

위의 HTML 코드에서는 <form> 태그를 사용하여 검색어를 입력받고, <script> 태그를 사용하여 검색 결과를 받아와서 화면에 표시합니다. 검색 결과는 <div id="results"> 요소 내부에 동적으로 추가됩니다.

결론

Pyramid을 사용하여 텍스트 검색 기능을 구현하는 방법을 알아보았습니다. 이를 활용하여 다양한 프로젝트에서 효율적으로 텍스트 검색 기능을 구현할 수 있습니다. Pyramid은 확장 가능하고 유연한 기능을 제공하여 웹 애플리케이션 개발을 좀 더 쉽고 편리하게 만들어줍니다.