Whoosh telah dicipta oleh Matt Chaput Ia bermula sebagai alat perkhidmatan carian yang mudah dan pantas untuk dokumentasi dalam talian bagi pakej perisian animasi 3D Houdini. Ia secara beransur-ansur menjadi alat penyelesaian carian matang dan telah menjadi sumber terbuka.
Whoosh ditulis semata-mata dalam Python Ia adalah alat enjin carian yang fleksibel, mudah dan ringan Ia kini menyokong kedua-dua Python2 dan 3. Kelebihannya adalah seperti berikut:
Bagi mereka yang biasa dengan ES, dua aspek penting carian ialah pemetaan dan pertanyaan, iaitu pembinaan indeks dan pertanyaan Di sebalik tabir ialah storan indeks yang kompleks, Penghuraian pertanyaan dan algoritma pengisihan, dsb. Jika anda mempunyai pengalaman dalam ES, maka Whoosh sangat mudah untuk dimulakan.
Mengenai penggunaan Whoosh, arahan terperinci telah diberikan dalam dokumen rasmi Penulis hanya memberikan contoh mudah di sini untuk menggambarkan bagaimana Whoosh boleh meningkatkan pengalaman carian kami dengan mudah.
Kod sampel
Data
Bidang
Berdasarkan ciri set data, kami mencipta empat medan (medan): tajuk, dinasti, penyair, kandungan . Kod yang dibuat adalah seperti berikut:
Antaranya, ID hanya boleh menjadi nilai unit dan tidak boleh dibahagikan kepada beberapa perkataan Ia sering digunakan untuk laluan fail, URL, tarikh dan kategori Fail TEKS Kandungan teks diindeks dan disimpan, dan carian perbendaharaan kata disokong;# -*- 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()) )
Buat fail indeks
Seterusnya, kita perlu mencipta fail indeks. Kami menggunakan atur cara untuk menghuraikan fail poem.csv dahulu, menukarnya kepada indeks dan menulisnya ke direktori indexdir. Kod Python adalah seperti berikut:
Selepas indeks berjaya dibuat, direktori indexdir akan dijana, yang mengandungi fail indeks untuk setiap medan data poem.csv di atas. Pertanyaan# 解析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()
Selepas indeks berjaya dibuat, kami akan menggunakannya untuk membuat pertanyaan.
Atas ialah kandungan terperinci Whoosh: Alat carian ringan untuk Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!