Whoosh는 Matt Chaput에 의해 만들어졌습니다. Houdini 3D 애니메이션 소프트웨어 패키지의 온라인 문서를 위한 간단하고 빠른 검색 서비스 도구로 시작하여 점차 성숙한 검색 솔루션 도구가 되었습니다. 오픈 소스.
Whoosh는 순수하게 Python으로 작성되었으며 유연하고 편리하며 가벼운 검색 엔진 도구입니다. 이제 Python2와 3을 모두 지원합니다. 장점은 다음과 같습니다.
Index & query
작성자의 이해와 Whoosh의 공식 문서에 따르면 Whoosh의 입문 용도는 주로 색인과 쿼리입니다. 검색 엔진의 강력한 기능 중 하나는 BM25와 같은 정렬 알고리즘과 필드 저장 방법에 따라 전체 텍스트 검색을 제공하는 기능입니다. 따라서 index가 명사로 사용되는 경우에는 해당 필드의 인덱스를 의미하고, 동사로 사용되는 경우에는 해당 필드의 인덱스를 설정하는 것을 의미합니다. 쿼리는 정렬 알고리즘을 사용하여 쿼리해야 하는 명령문을 기반으로 합리적인 검색 결과를 제공합니다.
Whoosh 사용과 관련하여 공식 문서에 자세한 지침이 제공되어 있습니다. 여기에서는 Whoosh가 검색 경험을 쉽게 개선할 수 있는 방법을 설명하기 위해 간단한 예만 제공합니다.
예제 코드
poem.csv
Fields
# -*- coding: utf-8 -*- import os from whoosh.index import create_in from whoosh.fields import * from jieba.analyse import ChineseAnalyzer import json # 创建schema, stored为True表示能够被检索 schema = Schema(title=TEXT(stored=True, analyzer=ChineseAnalyzer()), dynasty=ID(stored=True), poet=ID(stored=True), content=TEXT(stored=True, analyzer=ChineseAnalyzer()) )
그 중 ID는 단위 값만 가능하며 여러 단어로 나눌 수 없습니다. 파일 경로, URL, 날짜 및 분류에 자주 사용됩니다. 텍스트의 색인을 설정하고 저장하며, 단어 검색을 지원합니다. 분석기는 말더듬이 있는 중국어 단어 분할기를 선택합니다.
인덱스 파일 만들기
다음으로 인덱스 파일을 만들어야 합니다. 프로그램을 사용하여 먼저 poem.csv 파일을 구문 분석하고 이를 인덱스로 변환한 후 indexdir 디렉터리에 씁니다. Python 코드는 다음과 같습니다.
# 解析poem.csv文件 with open('poem.csv', 'r', encoding='utf-8') as f: texts = [_.strip().split(',') for _ in f.readlines() if len(_.strip().split(',')) == 4] # 存储schema信息至indexdir目录 indexdir = 'indexdir/' if not os.path.exists(indexdir): os.mkdir(indexdir) ix = create_in(indexdir, schema) # 按照schema定义信息,增加需要建立索引的文档 writer = ix.writer() for i in range(1, len(texts)): title, dynasty, poet, content = texts[i] writer.add_document(title=title, dynasty=dynasty, poet=poet, content=content) writer.commit()
Query
인덱스가 성공적으로 생성된 후 이를 쿼리에 사용합니다.
# 创建一个检索器 searcher = ix.searcher() # 检索content中出现'明月'的文档 results = searcher.find("content", "明月") print('一共发现%d份文档。' % len(results)) for i in range(min(10, len(results))): print(json.dumps(results[i].fields(), ensure_ascii=False))
출력 결과는 다음과 같습니다.
一共发现44份文档。 前10份文档如下: {"content": "床前明月光,疑是地上霜。举头望明月,低头思故乡。", "dynasty": "唐代", "poet": "李白 ", "title": "静夜思"} {"content": "边草,边草,边草尽来兵老。山南山北雪晴,千里万里月明。明月,明月,胡笳一声愁绝。", "dynasty": "唐代", "poet": "戴叔伦 ", "title": "调笑令·边草"} {"content": "独坐幽篁里,弹琴复长啸。深林人不知,明月来相照。", "dynasty": "唐代", "poet": "王维 ", "title": "竹里馆"} {"content": "汉江明月照归人,万里秋风一叶身。休把客衣轻浣濯,此中犹有帝京尘。", "dynasty": "明代", "poet": "边贡 ", "title": "重赠吴国宾"} {"content": "秦时明月汉时关,万里长征人未还。但使龙城飞将在,不教胡马度阴山。", "dynasty": "唐代", "poet": "王昌龄 ", "title": "出塞二首·其一"} {"content": "京口瓜洲一水间,钟山只隔数重山。春风又绿江南岸,明月何时照我还?", "dynasty": "宋代", "poet": "王安石 ", "title": "泊船瓜洲"} {"content": "四顾山光接水光,凭栏十里芰荷香。清风明月无人管,并作南楼一味凉。", "dynasty": "宋代", "poet": "黄庭坚 ", "title": "鄂州南楼书事"} {"content": "青山隐隐水迢迢,秋尽江南草未凋。二十四桥明月夜,玉人何处教吹箫?", "dynasty": "唐代", "poet": "杜牧 ", "title": "寄扬州韩绰判官"} {"content": "露气寒光集,微阳下楚丘。猿啼洞庭树,人在木兰舟。广泽生明月,苍山夹乱流。云中君不见,竟夕自悲秋。", "dynasty": "唐代", "poet": "马戴 ", "title": "楚江怀古三首·其一"} {"content": "海上生明月,天涯共此时。情人怨遥夜,竟夕起相思。灭烛怜光满,披衣觉露滋。不堪盈手赠,
위 내용은 Whoosh: Python용 경량 검색 도구의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!