検索
ホームページバックエンド開発Python チュートリアルPython軽量検索ツールWhooshの利用(概要共有)

この記事では、Python に関する関連知識を提供します。Python の軽量検索ツールである Whoosh について簡単に紹介し、対応する使用例コードを次のように示します。見てみましょう。みんなの役に立つように。

Python軽量検索ツールWhooshの利用(概要共有)

[関連する推奨事項: Python3 ビデオ チュートリアル ]

この記事では、Python の軽量検索ツールである Whoosh について簡単に紹介します。対応する使用例のコードを示します。

Whoosh の概要

Whoosh は Matt Chaput によって作成されました。これは Houdini 3D アニメーション ソフトウェア パッケージのオンライン ドキュメントのシンプルかつ高速な検索サービス ツールとして始まり、その後ゆっくりと成熟しました。検索ソリューション ツールがオープンソース化されました。

Whoosh は純粋に Python で書かれています。柔軟で便利な軽量の検索エンジン ツールです。Python2 と 3 の両方をサポートするようになりました。その利点は次のとおりです:

  • Whoosh は次のとおりです。純粋に Python で書かれていますが、非常に高速です。Python 環境のみが必要で、コンパイラは必要ありません。
  • デフォルトでは、Okapi BM25F ソート アルゴリズムが使用され、他のソート アルゴリズムもサポートされています。
  • 他の検索エンジンと比較して、Whoosh はより小さなインデックス ファイルを作成します;
  • Whoosh のインデックス ファイルのエンコードは Unicode である必要があります;
  • Whoosh は任意の Python オブジェクトを保存できます。

Whoosh の公式紹介 Web サイトは、https://whoosh.readthedocs.io/en/latest/intro.html です。 ElasticSearch や Solr などの成熟した検索エンジン ツールと比較して、Whoosh は軽量で操作が簡単なので、小規模な検索プロジェクトでの使用を検討できます。

インデックスとクエリ

ES に詳しい人にとって、検索の 2 つの重要な側面はマッピングとクエリ、つまりインデックス構築とクエリです。舞台裏には複雑なインデックス ストレージがあり、クエリ解析および並べ替えアルゴリズムなど。 ES の経験がある場合、Whoosh は非常に簡単に始めることができます。

著者の理解と Whoosh の公式ドキュメントによると、Whoosh の主な入門レベルの用途はインデックスとクエリです。検索エンジンの強力な機能の 1 つは、全文検索を提供できることです。これは、BM25 などの並べ替えアルゴリズムに依存し、フィールドの保存方法にも依存します。したがって、index が名詞として使用される場合はフィールドのインデックスを指し、index が動詞として使用される場合はフィールドのインデックスを確立することを指します。クエリは並べ替えアルゴリズムを使用して、クエリが必要なステートメントに基づいて適切な検索結果を提供します。

Whoosh の使用方法については、公式ドキュメントに詳細な説明が記載されていますが、ここでは、Whoosh がどのように簡単に検索エクスペリエンスを向上させることができるかを説明するために、著者は簡単な例のみを示しています。

#サンプル コード

データ

このプロジェクトのサンプル データは詩.csv です。次の図はデータ セットの最初の 10 行です:

フィールド

データセットの特性に従って、タイトル、王朝、詩人、内容の 4 つのフィールド (フィールド) を作成します。

# -*- 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、日付、カテゴリなどによく使われます。

#TEXT ファイルのテキスト コンテンツ、テキストのインデックス付けと保存、および単語検索のサポート。アナライザーは吃音中国語単語セグメンターを選択します。

インデックス ファイルの作成

次に、インデックス ファイルを作成する必要があります。このプログラムを使用して、最初に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()

インデックスが正常に作成されると、indexdir ディレクトリが生成されます。このディレクトリには、上記の poem.csv データの各フィールドのインデックス ファイルが含まれます。

Query

インデックスが正常に作成されたら、それを使用してクエリを実行します。

たとえば、コンテンツに

明月

を含む詩をクエリする場合は、次のコードを入力できます: <pre class='brush:php;toolbar:false;'># 创建一个检索器 searcher = ix.searcher() # 检索content中出现&amp;#39;明月&amp;#39;的文档 results = searcher.find(&quot;content&quot;, &quot;明月&quot;) print(&amp;#39;一共发现%d份文档。&amp;#39; % len(results)) for i in range(min(10, len(results))): print(json.dumps(results[i].fields(), ensure_ascii=False))</pre>出力結果は次のとおりです。 ##

合計 44 個のドキュメントが見つかりました。
最初の 10 件の文書は次のとおりです:
{"content": "ベッドの前に明るい月明かりがあり、地面に霜がついたのではないかと思われます。明るい月を見上げて頭を下げます。故郷を想う。", "dynasty": "唐代", "詩人": "李白", "title": "きよしこの夜の思い"}
{"content": "端の草、端の草、端の草はすべてここにあります 山の南と北の雪は澄んでいて、月は何千マイルも離れて明るいです 明るい月、明るい月、胡家は叫びました"、"王朝": "唐代"、"詩人": "戴樹倫"、"タイトル": "ティアオ・シャオリン・ビアンツァオ"}
{"content": "静かな竹の中に一人で座る、私はピアノを弾き、大声で口笛を吹きます。深い森の人々は、明るい月が輝くことを知りません。」、「王朝」:「唐代」、「詩人」:「王偉」、「タイトル」: "竹里閣"}
{" content": "漢江の明るい月が帰郷する人々を照らし、秋の風が千里を越えて広がります。ゲストの服を軽く洗わないでください。まだ埃が残っています。帝都より。"、"dynasty": "明朝"、"poet": "Bian Gong"、"title": "呉国賓への重い贈り物"}
{"content": "明るい月秦王朝の峠と漢王朝の峠、そして数千マイルを行進した人々は戻ってきませんでした。しかし、龍城の飛行将軍はここにいます、そして彼らは胡馬に殷山を越えるように教えません。」 dynasty": "唐代"、"詩人": "王長陵"、"title": "城外の詩二首・一首"}
{"content": "京口と瓜州の間には、詩が一つしかない水、中山山 数え切れないほどの山々。春風が川の南岸まで緑に変わります。明るい月はいつ再び私を照らしますか?」、「王朝」:「宋」、「詩人」:「王安石」、 "title": "Boancing Guazhou"}
{" content": "周りを見回すと、山の光と水の光が見えます。手すりに寄りかかって、野の花の香りを嗅ぐことができます。澄んだ風と明るい月を気にする人は誰もおらず、南館にいるといつも涼しいです。"、"王朝": "宋"、"詩人": "黄庭堅"、"タイトル": "鄂州南楼書道"}
{"content": "緑の山はかすかに見え、水は遠く、長江の南の草は秋になっても枯れていません。二十四橋、美人はどこで笛を教えてくれますか?"、"王朝": "唐代"、"詩人": "杜牧"、"タイトル": "揚州の漢仲判事へ"}
{"content": "露の空気は冷たく、光が集まり、竹丘の下で太陽が輝いています。猿が洞窟で泣いています。木々、木蘭船に乗る人々。明るい月が広江を照らしています、そして蒼山山脈の激流。雲の中にあなたは見えませんが、夜になると悲しい気がします。"、"王朝": "唐代"、"詩人": "马代"、"タイトル ": "チュー川に関する 3 つの懐かしい詩のうちの 1 つ"}
{"content": "明るい月が海に昇り、私たちは世界の終わりのこの瞬間を共有します。恋人たちは遠い夜について不平を言いますが、彼らは恋しいです夜はお互いに。ろうそくの火が消えて、その光は哀れみに満ちていて、服は露で覆われている。栄養がある。人にあげるのは忍びないが、それでもよく眠れる。」、「王朝」 ": "唐代"、"詩人": "張九陵"、"title": "月を見て淮源 / 月を見て昔を懐かしむ"}

#[関連推奨事項:

Python3 ビデオ チュートリアル ]

以上がPython軽量検索ツールWhooshの利用(概要共有)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は脚本之家で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Python vs. C:比較されたアプリケーションとユースケースPython vs. C:比較されたアプリケーションとユースケースApr 12, 2025 am 12:01 AM

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間のPython計画:現実的なアプローチ2時間のPython計画:現実的なアプローチApr 11, 2025 am 12:04 AM

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Python:主要なアプリケーションの調査Python:主要なアプリケーションの調査Apr 10, 2025 am 09:41 AM

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間でどのくらいのPythonを学ぶことができますか?2時間でどのくらいのPythonを学ぶことができますか?Apr 09, 2025 pm 04:33 PM

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?Apr 02, 2025 am 07:18 AM

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか?中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか?Apr 02, 2025 am 07:15 AM

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

Python 3.6にピクルスファイルをロードするときに「__Builtin__」モジュールが見つからない場合はどうすればよいですか?Python 3.6にピクルスファイルをロードするときに「__Builtin__」モジュールが見つからない場合はどうすればよいですか?Apr 02, 2025 am 07:12 AM

Python 3.6のピクルスファイルのロードレポートエラー:modulenotFounderror:nomodulenamed ...

風光明媚なスポットコメント分析におけるJieba Wordセグメンテーションの精度を改善する方法は?風光明媚なスポットコメント分析におけるJieba Wordセグメンテーションの精度を改善する方法は?Apr 02, 2025 am 07:09 AM

風光明媚なスポットコメント分析におけるJieba Wordセグメンテーションの問題を解決する方法は?風光明媚なスポットコメントと分析を行っているとき、私たちはしばしばJieba Wordセグメンテーションツールを使用してテキストを処理します...

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。