Dieser Artikel vermittelt Ihnen relevantes Wissen über Python. Er stellt Whoosh, ein einfaches Suchtool in Python, vor und gibt Ihnen den entsprechenden Beispielcode für die Verwendung.
【Verwandte Empfehlung: Python3-Video-Tutorial】
Dieser Artikel stellt Whoosh, ein leichtes Suchtool in Python, kurz vor und gibt entsprechenden Beispielcode für die Verwendung.
Whoosh wurde als einfaches und schnelles Suchdiensttool für Online-Dokumente des Houdini 3D-Animationssoftwarepakets entwickelt und ist seitdem langsam zu einer ausgereiften Suchlösung geworden .
Whoosh ist ausschließlich in Python geschrieben. Es unterstützt jetzt sowohl Python2 als auch 3. Seine Vorteile sind wie folgt:
Index und Abfrage
Nach dem Verständnis des Autors und der offiziellen Dokumentation von Whoosh besteht die einführende Verwendung von Whoosh hauptsächlich aus Index und Abfrage. Eine der leistungsstarken Funktionen einer Suchmaschine ist ihre Fähigkeit zur Volltextsuche, die von Sortieralgorithmen wie BM25 und der Art und Weise, wie wir Felder speichern, abhängt. Wenn Index als Substantiv verwendet wird, bezieht es sich daher auf den Index des Felds, und wenn Index als Verb verwendet wird, bezieht es sich auf die Festlegung des Index des Felds. Die Abfrage verwendet den Sortieralgorithmus, um basierend auf den abzufragenden Aussagen vernünftige Suchergebnisse zu liefern.
Bezüglich der Verwendung von Whoosh wurden in den offiziellen Dokumenten detaillierte Anweisungen gegeben. Der Autor gibt hier nur ein einfaches Beispiel, um zu veranschaulichen, wie Whoosh unser Sucherlebnis leicht verbessern kann.
Beispielcode
Felder
# -*- 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()) )
Unter diesen kann die ID nur ein Einheitswert sein und nicht in mehrere Wörter unterteilt werden. Sie wird häufig für Dateipfade, URLs, Daten und Klassifizierungen verwendet. Erstellen Sie einen Index des Textes und speichern Sie ihn. Unterstützt die Wortsuche. Der Analysator wählt stotternde chinesische Wörter aus.
Erstellen Sie die Indexdatei
Als nächstes müssen wir die Indexdatei erstellen. Wir verwenden das Programm, um zunächst die Datei „poem.csv“ zu analysieren, sie in einen Index umzuwandeln und sie in das Verzeichnis „indexdir“ zu schreiben. Der Python-Code lautet wie folgt:
# 解析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()
Abfrage
Nachdem der Index erfolgreich erstellt wurde, verwenden wir ihn zur Abfrage.
# 创建一个检索器 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))
】Insgesamt 44 Dokumente gefunden.
Python3-Video-Tutorial
Die ersten 10 Dokumente lauten wie folgt:
{"Inhalt": „Vor dem Bett ist helles Mondlicht und es wird vermutet, dass es Frost auf dem Boden gibt. Ich schaue zum hellen Mond auf und senke meinen Kopf, um nachzudenken über meine Heimatstadt.", "dynasty": "Tang Dynasty", "poet": "Li Bai", "title": "Quiet Night Thoughts"}
{"content": "Das Gras am Rand, das Gras weiter Der Rand, der alte Soldat, kommt. Der Schnee ist im Süden und Norden des Berges klar, und der Mond scheint über Tausende von Kilometern, „Dynastie“: „Tang-Dynastie“, „Dichter“. ": "Dai Shulun", "title": "Tiao Xiaoling·Biancao"}
{"content": "Einsam im abgelegenen Bambus sitzen, Klavier spielen und im tiefen Wald brüllen. Die Leute wissen nicht, dass das Licht Der Mond scheint auf die Menschen. Tausende Kilometer Herbstwind haben die Kleidung des Gastes leicht abgewischt, aber es gibt immer noch Staub aus der Hauptstadt des Kaisers. }
{"content": "Der helle Mond der Qin-Dynastie und der Pass der Han-Dynastie , die Menschen, die Tausende von Meilen marschiert sind, sind nicht zurückgekehrt, aber die fliegenden Generäle von Dragon City sind hier und sie werden Hu Ma nicht beibringen, den Yin-Berg zu überqueren.“, „dynasty“: „Tang Dynasty“, „poet“ : „Wang Changling“, „title“: „Zwei Gedichte aus der Festung·One“}
{“content“: „Zhongshan liegt zwischen dem Wasser in Jingkou Guazhou und ist nur durch mehrere Berge getrennt. Im Süden weht die Frühlingsbrise grün Ufer des Flusses. Wann wird der helle Mond auf mich scheinen? Beim Blick auf die Berge und das Wasser ist der Duft von Lotusblumen zehn Meilen entfernt, und der Südturm ist kalt weit weg, und das Gras im Süden des Jangtsekiang ist nach dem Herbst nicht verdorrt, wo kann die Schönheit in der Mondnacht der Vierundzwanzig Brücken das Flötenspiel unterrichten?“, „dynasty“: „Tang Dynasty“, „ poet": "Du Mu", "title" : "An Richter Han Chuo aus Yangzhou senden"}
{"content": "Die Tauluft ist kalt und das Licht sammelt sich, und die Sonne scheint unter den Chuqiu „Es singt in den Dongting-Bäumen und die Menschen sind in Magnolienbooten. Es gibt einen hellen Mond in Guangze und turbulente Strömungen im Cangshan-Gebirge. Ich bin traurig über den Herbst in der Nacht.“ Dynasty", "poet": "Ma Dai", "title": "One of Three Nostalgic Poems of Chujiang"}
{"content": "Der helle Mond geht über dem Meer auf und die Welt ist zu dieser Zeit verliebt In der fernen Nacht hassen sie einander, aber am Abend vermissen sie einander. Die Kerzen sind voller Mitleid und sie spüren den Tau in ihren Händen“, „Dynastie“: „Tang-Dynastie“, „Dichter“: „Zhang Jiuling", "title": "Blick auf den Mond und Huaiyuan / Blick auf den Mond und Nostalgie für die Vergangenheit"}
【Verwandte Empfehlungen:
Das obige ist der detaillierte Inhalt vonDie Verwendung des Python-Lightweight-Suchtools Whoosh (Zusammenfassungsfreigabe). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!