Artikel ini membawa anda pengetahuan yang berkaitan tentang Python Ia akan memperkenalkan secara ringkas Whoosh, alat carian ringan dalam Python, dan memberikan kod contoh penggunaan yang sepadan, seperti berikut Mari kita lihat, saya harap ia akan. berguna kepada semua orang.
[Cadangan berkaitan: Tutorial video Python3 ]
Artikel ini akan memperkenalkan Whoosh, alat carian ringan dalam Python Dan berikan kod contoh penggunaan yang sepadan.
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, dan kemudian perlahan-lahan menjadi The matang. alat penyelesaian carian telah menjadi sumber terbuka.
Whoosh ditulis 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
Mengikut 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 klasifikasi 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.
Hasil output adalah seperti berikut: 明月
Tutorial video Python3Sebanyak 44 dokumen ditemui.
【Cadangan berkaitan:
10 dokumen pertama adalah seperti berikut:
{"content": "Terdapat cahaya bulan yang terang di hadapan katil, disyaki terdapat fros di atas tanah. Tengok ke atas pada bulan yang terang dan tundukkan kepala anda untuk berfikir tentang kampung halaman anda.", "dinasti": "Dinasti Tang", "penyair ": "Li Bai ", "tajuk": "Fikiran Malam Senyap"}
{"content": "Rumput di tepi, rumput di tepi, askar tua datang salji di selatan dan utara gunung, dan bulan cerah untuk beribu-ribu batu ", "dinasti": "Dinasti Tang", "penyair": "Dai Shulun", "title": "Tiao Xiao Ling·Bian Cao"}
{"content": "Duduk bersendirian di dalam buluh yang sunyi di dalam, orang di dalam hutan tidak tahu bahawa bulan yang terang datang shine. content": "Bulan terang bersinar di Sungai Han, dan angin musim luruh membasuh pakaian tetamu, tetapi masih ada debu ibu kota empayar.", "dinasti": "Dinasti Ming", "penyair ": "Bian Gong", "title": "Hadiah berat kepada Wu Guobin"}
{"content": "Bulan terang Dinasti Qin dan pas Dinasti Han, dan orang-orang yang berarak beribu-ribu mil belum kembali tetapi jeneral terbang Kota Naga ada di sini, dan mereka tidak akan mengajar Hu Ma untuk menyeberangi Pergunungan Yin.", "dinasti": "Dinasti Tang", "penyair": "Wang Changling", " title": "Dua puisi keluar dari kubu·Satu"}
{"content": "Jingkou Guazhou dipisahkan oleh air, dan Zhongshan tepat di seberangnya Angin musim bunga kembali menghijau di tebing selatan sungai. Bilakah bulan yang cerah menyinari saya lagi": "Melihat sekeliling, ada gunung dan air, dan keharuman bunga teratai adalah sepuluh batu jauhnya. "dynasty": "Dinasti Song", "poet": "Huang Tingjian", "title ": "Ezhou Nanlou Calligraphy"}
{"content": "Gunung hijau samar dan airnya jauh, dan rumput di selatan Sungai Yangtze tidak layu pada akhir musim luruh Pada malam bulan di Jambatan Dua Puluh Empat, di manakah keindahan itu boleh mengajar saya bermain seruling ", "dinasti ": "Dinasti Tang"? , "poet": "Du Mu", "title": "Kepada Hakim Han Chuo dari Yangzhou"}
{"content": "Udara embun sejuk dan cahaya sedang berkumpul, dan beruk menangis di dalam Dongting dari Chuqiu di bawah cahaya matahari, orang-orang di dalam bot Mulan bersinar di Guangze, dan arus bergelora di Pergunungan Cangshan membuat saya sedih pada waktu malam ": "Satu daripada Tiga Puisi Nostalgia di Sungai Chu "}
{"content": "Bulan terang bersinar di laut, dan kita pada saat ini di dunia Kekasih mengeluh tentang malam yang jauh, tetapi mereka bangun dengan cinta pada waktu petang apabila lilin dipadamkan. dan cahayanya penuh. Ia terlalu bagus untuk diberikan ", "dinasti": "Dinasti Tang", "penyair": "Zhang Jiuling", "tajuk": "Melihat bulan dan menghargai masa lalu"}
Atas ialah kandungan terperinci Penggunaan alat carian ringan Python Whoosh (perkongsian ringkasan). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!