Heim > Backend-Entwicklung > Python-Tutorial > Die Verwendung des Python-Lightweight-Suchtools Whoosh (Zusammenfassungsfreigabe)

Die Verwendung des Python-Lightweight-Suchtools Whoosh (Zusammenfassungsfreigabe)

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2022-08-23 20:09:36
nach vorne
3122 Leute haben es durchsucht

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.

Die Verwendung des Python-Lightweight-Suchtools Whoosh (Zusammenfassungsfreigabe)

【Verwandte Empfehlung: Python3-Video-Tutorial

Dieser Artikel stellt Whoosh, ein leichtes Suchtool in Python, kurz vor und gibt entsprechenden Beispielcode für die Verwendung.

Einführung in Whoosh

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:

  • Whoosh ist ausschließlich in Python geschrieben, aber es ist sehr schnell Es ist nur eine Python-Umgebung erforderlich, es ist kein Compiler erforderlich.
  • Okapi BM25F-Sortieralgorithmus wird ebenfalls unterstützt.
  • Im Vergleich zu anderen Suchmaschinen erstellt Whoosh kleinere Indexdateien Die Codierung der Indexdatei muss Unicode sein.
  • Whoosh kann jedes Python-Objekt speichern.
  • Whooshs offizielle Einführungswebsite ist: https://whoosh.readthedocs.io/en/latest/intro.html. Im Vergleich zu ausgereiften Suchmaschinentools wie ElasticSearch oder Solr ist Whoosh leichter und einfacher zu bedienen und kann für den Einsatz in kleinen Suchprojekten in Betracht gezogen werden.

Index und Abfrage

Für diejenigen, die mit ES vertraut sind, sind die beiden wichtigen Aspekte der Suche Zuordnung und Abfrage, dh Indexkonstruktion und Abfrage, hinter denen komplexe Indexspeicher-, Abfrageanalyse- und Sortieralgorithmen stehen. Wenn Sie Erfahrung mit ES haben, ist der Einstieg mit Whoosh sehr einfach.

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

Daten

Die Beispieldaten dieses Projekts sind poet.csv. Das folgende Bild zeigt die ersten zehn Zeilen des Datensatzes:

Felder

Entsprechend den Eigenschaften des Datensatzes, Wir erstellen vier Felder (Felder): Titel, Dynastie, Dichter, Inhalt. Der erstellte Code lautet wie folgt:

# -*- 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())
                )
Nach dem Login kopieren

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()
Nach dem Login kopieren

Nachdem der Index erfolgreich erstellt wurde, wird das Verzeichnis indexdir generiert, das die Indexdateien für jedes Feld der oben genannten poet.csv-Daten enthält.

Abfrage

Nachdem der Index erfolgreich erstellt wurde, verwenden wir ihn zur Abfrage.

Wenn wir beispielsweise die Verse abfragen möchten, die

im Inhalt enthalten, können wir den folgenden Code eingeben:

# 创建一个检索器
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))
Nach dem Login kopieren
Das Ausgabeergebnis lautet wie folgt:

Insgesamt 44 Dokumente gefunden.
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:

Python3-Video-Tutorial

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!

Verwandte Etiketten:
Quelle:jb51.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage