Python 에서 영어 전체 텍스트 검색 을 위 한 예제

판권 소유
주소
인터넷 의 각종 사이트 에 서 는 크기 와 상 관 없 이 기본적으로 하나의 검색 상자 가 있어 서 사용자 에 게 내용 을 검색 하고 작은 사이트 에서 검색 하 며 큰 검색엔진 에서 검색 할 수 있 습 니 다.
간단하게 말 하면 검색 기능 은 확실히 간단 하 다.간단 한 selection 문 구 는 데이터 검색 을 실현 할 수 있다.
복잡 하 게 볼 때 검색 의 정밀도 든 검색 의 효율 이 든 모두 깊 은 연구 범 위 를 가진다.
간단 한 검색 기능 에 있어 서 하나의 selection 조회 문 구 는 충분히 사용 할 수 있 지만 약간 복잡 한 검색 환경 에서 예 를 들 어 웹 페이지,문서,뉴스 정보 등 장면,단순 한 select 조회 문 구 는 매우 부족 하 다.이 장면 에서 검색 하면 전체 텍스트 검색 은 최소 설정 입 니 다.
전문 검색 이란 무엇 입 니까?바 이 두 백과 가 이렇게 말 했다.
전문 데이터 베 이 스 는 전문 검색 시스템 의 주요 구성 부분 이다.전문 데이터 베 이 스 는 완전한 정보 원 의 모든 내용 을 컴퓨터 가 식별 하고 처리 할 수 있 는 정보 단위 로 전환 시 켜 형 성 된 데이터 집합 이다.전문 데이터 베 이 스 는 정 보 를 저장 할 뿐만 아니 라 전문 데이터 에 대해 단어,글자,단락 등 더욱 심층 적 인 편집,가공 기능 도 있 을 뿐만 아니 라 모든 전문 데이터 베 이 스 는 대량의 정보 데이터 베이스 가 아 닌 것 이 없다.
애매 하 게 보 이 죠?간단 한 예 를 들 면 대충 이해 할 수 있다.정상 적 인 상황 에서 저 희 는'Python 설치 튜 토리 얼'을 검색 합 니 다.일반적인 검색 이 라면 select 데이터베이스 에'Python 설치 튜 토리 얼'이 포 함 된 내용 을 직접 사용 합 니 다.그러나 전체 텍스트 검색 은 먼저 검색 어 를'Python 설치 튜 토리 얼','Python','설치 튜 토리 얼','설치','튜 토리 얼'등 으로 나 눈 다음 분 리 된 어구 로 검색 합 니 다.
시중 의 모든 검색엔진 은 전문 검색 을 사용 했다.

최근'MrDoc 커 뮤 니 케 이 션 그룹'에 서 는 찾 는 문서 에 전체 텍스트 검색 을 추가 하 라 는 목소리 가 높 아 찾 는 문서 에서 일반적인 select 검색 을 전체 텍스트 검색 으로 대체 할 계획 이다.
가장 흔히 볼 수 있 는 오픈 소스 전문 검색엔진 은 Elasticsearch 로 기능 이 강하 고 성능 이 강하 지만 자바 기반 으로 작 성 된 것 으로 Python 에서 사용 하 는 것 이 편리 하지 않 습 니 다.결국 주 씨 는 순수 Python 이 실현 하 는 전문 검색엔진 인 whoosh 를 선택 하고 Django 의 오픈 소스 검색 프레임 워 크 인 haystack 을 통 해 jieba 중국어 분사 고 에 의존 합 니 다.문 서 를 찾 는 전형 적 인 Python 웹 애플 리 케 이 션 에서 중 영문 전문 검색 을 실현 했다.

설치 의존 라 이브 러 리
위 에서 말 한 바 와 같이 이번 순수 Python 방안 은 중 영문 전문 검색 을 다음 과 같은 3 개의 라 이브 러 리 에 사 용 했 습 니 다.
  • whoosh
  • haystack
  • jieba
  • 설치 가 필요 합 니 다.pip 명령 으로 설치 하면 됩 니 다.
    
    pip install whoosh
    pip install django-haystack
    pip install jieba
    설정 설정
    우선 Django 프로젝트 의 settings.py 파일 에서 설정 해 야 합 니 다.
    첫째,INSTALLED 에서APPS 에 haystack 라 이브 러 리 추가:

    둘째,haystack 설정 항목 추가
    
    #    、  、     ,      
    HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
    #      
    HAYSTACK_CUSTOM_HIGHLIGHTER = "app_doc.search.highlight.MyHighLighter"
    색인 생 성
    appdoc 디 렉 터 리 아래 새 이름 은 searchindexes.py 파일 은 다음 과 같은 내용 을 입력 하 십시오.

    template 디 렉 터 리 에 search 라 는 디 렉 터 리 를 새로 만 든 다음 search 디 렉 터 리 에 indexes 라 는 디 렉 터 리 를 새로 만 든 다음 app 라 는 디 렉 터 리 를 새로 만 듭 니 다.doc 디 렉 터 리(Django 와 같은 이름 적용),마지막 으로 이/template/search/appdoc 디 렉 터 리 아래 새 이름 doctext.txt 파일(모델 이름text.txt)색인 이 필요 한 모델 필드 를 입력 하 십시오:
    
    {{object.name}}
    {{object.pre_content}}
    중국어 단어 기 만 들 기
    whoosh 는 중국어 의 단어 구분 능력 이 안 되 기 때문에 만약 에 우리 가 중국 어 를 검색 하면 80%가 단 어 를 나 누 지 않 기 때문에 우 리 는 jieba 모듈 을 추가 로 도입 하여 중국어 단 어 를 나 누 었 다.
    /mrDoc/appdoc/search 디 렉 터 리 다음 에 새로 만 든 이름 은 chinesanalyzer.py 파일 은 다음 코드 를 기록 합 니 다.

    사용자 정의 whoosh 검색엔진
    /mrDoc/appdoc/search 디 렉 터 리 다음 새 이름 은 whooshcn_backend.py 파일(이 경로 파일 은 settings.py 파일 에서 지정 한 엔진 경로 입 니 다),python 설치 경 로 를 복사 합 니 다\Lib\site-packages\haystack\\backends\whoosh백 엔 드.py 의 내용 을 이 파일 에 저장 하고 다음 과 같이 수정 합 니 다.
    
    from whoosh.analysis import StemmingAnalyzer
    다음으로 바 꾸 기:
    
    from app_doc.search.chinese_analyzer import ChineseAnalyzer as StemmingAnalyzer
    이렇게 해서 우 리 는 중국어 단 어 를 나 눌 수 있 는 whoosh 엔진 을 사용자 정의 하면 완성 된다.
    보기 함수 작성
    위 절 차 를 마 친 후 전체 검색엔진 의 막후 작업 이 완료 되 었 습 니 다.Django 방식 에 따라 논리 적 보 기 를 작성 하고 HTML 템 플 릿 을 렌 더 링 해 야 합 니 다.
    여기 있 습 니 다.주의 선생님 은/mrDoc/app 에 있 습 니 다.doc/다음 에 views 라 는 이름 을 새로 만 들 었 습 니 다.search.py 파일 은 전체 텍스트 검색 의 보기 함 수 를 배치 하고 haystack.views.SearchView 류 를 계승 하여 전체 텍스트 검색 보기 류 를 사용자 정의 합 니 다.

    HTML 템 플 릿 렌 더 링
    전체 텍스트 검색엔진 의 데 이 터 는 기본적으로 특정한 HTML 템 플 릿 에 되 돌 아 왔 습 니 다.주 씨 는 이 를 사용자 정의 하지 않 았 기 때문에 haystack 의 요구 에 따라 template/search 디 렉 터 리 에 search.html 라 는 템 플 릿 파일 을 새로 만 들 었 습 니 다.전체 텍스트 검색 보기 류 가 되 돌아 오 는 검색 데이터 세트 를 렌 더 링 분석 합 니 다.

    색인 생 성
    마지막 으로 명령 행 터미널 에서 색인 파일 을 만 들 고 다음 명령 을 사용 해 야 합 니 다.
    
    python manage.py rebuild_index
    이렇게 해서 순수 Python 방안 의 중 영문 전문 검색 을 실 현 했 습 니 다.효 과 는 다음 과 같 습 니 다.

    글 에서 언급 한 코드 는 모두 MrDoc 에서 문서 원본 코드 를 찾 는 것 입 니 다.이 는 다음 과 같 습 니 다.
  • /MrDoc/MrDoc/settings.py
  • /MrDoc/app_doc/search/chinese_analyzer.py
  • /MrDoc/app_doc/search/highlight.py
  • /MrDoc/app_doc/search/whoosh_cn_backend.py
  • /MrDoc/app_doc/search_indexes.py
  • /MrDoc/app_doc/views_search.py
  • /MrDoc/template/search/*
  • 원본 주소:
    주의 선생 블 로그
    https://zmister.com/archives/1596.html
    이상 은 Python 에서 영어 전체 텍스트 검색 을 실현 하 는 예제 의 상세 한 내용 입 니 다.python 에서 전체 텍스트 검색 을 실현 하 는 데 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!

    좋은 웹페이지 즐겨찾기