目次
Whoosh の概要
インデックスとクエリ
次に、インデックス ファイルを作成する必要があります。このプログラムを使用して、最初にpoem.csvファイルを解析し、それをインデックスに変換し、indexdirディレクトリに書き込みます。 Python コードは次のとおりです。
インデックスが正常に作成されたら、それを使用してクエリを実行します。
ホームページ バックエンド開発 Python チュートリアル Python軽量検索ツールWhooshの利用(概要共有)

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

Jul 26, 2022 pm 02:03 PM
python

この記事では、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

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

たとえば、コンテンツに

明月

を含む詩をクエリする場合は、次のコードを入力できます:

# 创建一个检索器
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))
ログイン後にコピー
出力結果は次のとおりです。 ##

合計 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 までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

XML形式を開く方法 XML形式を開く方法 Apr 02, 2025 pm 09:00 PM

ほとんどのテキストエディターを使用して、XMLファイルを開きます。より直感的なツリーディスプレイが必要な場合は、酸素XMLエディターやXMLSPYなどのXMLエディターを使用できます。プログラムでXMLデータを処理する場合、プログラミング言語(Pythonなど)やXMLライブラリ(XML.ETREE.ELEMENTTREEなど)を使用して解析する必要があります。

XMLをPDFに変換できるモバイルアプリはありますか? XMLをPDFに変換できるモバイルアプリはありますか? Apr 02, 2025 pm 08:54 PM

XMLをPDFに直接変換するアプリケーションは、2つの根本的に異なる形式であるため、見つかりません。 XMLはデータの保存に使用され、PDFはドキュメントを表示するために使用されます。変換を完了するには、PythonやReportLabなどのプログラミング言語とライブラリを使用して、XMLデータを解析してPDFドキュメントを生成できます。

携帯電話でXMLをPDFに変換するとき、変換速度は高速ですか? 携帯電話でXMLをPDFに変換するとき、変換速度は高速ですか? Apr 02, 2025 pm 10:09 PM

Mobile XMLからPDFへの速度は、次の要因に依存します。XML構造の複雑さです。モバイルハードウェア構成変換方法(ライブラリ、アルゴリズム)コードの品質最適化方法(効率的なライブラリ、アルゴリズムの最適化、キャッシュデータ、およびマルチスレッドの利用)。全体として、絶対的な答えはなく、特定の状況に従って最適化する必要があります。

XMLのコメントコンテンツを変更する方法 XMLのコメントコンテンツを変更する方法 Apr 02, 2025 pm 06:15 PM

小さなXMLファイルの場合、注釈コンテンツをテキストエディターに直接置き換えることができます。大きなファイルの場合、XMLパーサーを使用してそれを変更して、効率と精度を確保することをお勧めします。 XMLコメントを削除するときは注意してください。コメントを維持すると、通常、コードの理解とメンテナンスが役立ちます。高度なヒントは、XMLパーサーを使用してコメントを変更するためのPythonサンプルコードを提供しますが、特定の実装を使用するXMLライブラリに従って調整する必要があります。 XMLファイルを変更する際のエンコード問題に注意してください。 UTF-8エンコードを使用して、エンコード形式を指定することをお勧めします。

推奨されるXMLフォーマットツール 推奨されるXMLフォーマットツール Apr 02, 2025 pm 09:03 PM

XMLフォーマットツールは、読みやすさと理解を向上させるために、ルールに従ってコードを入力できます。ツールを選択するときは、カスタマイズ機能、特別な状況の処理、パフォーマンス、使いやすさに注意してください。一般的に使用されるツールタイプには、オンラインツール、IDEプラグイン、コマンドラインツールが含まれます。

携帯電話用の無料のXMLからPDFツールはありますか? 携帯電話用の無料のXMLからPDFツールはありますか? Apr 02, 2025 pm 09:12 PM

モバイルには、単純で直接無料のXMLからPDFツールはありません。必要なデータ視覚化プロセスには、複雑なデータの理解とレンダリングが含まれ、市場のいわゆる「無料」ツールのほとんどは経験がありません。コンピューター側のツールを使用したり、クラウドサービスを使用したり、アプリを開発してより信頼性の高い変換効果を取得することをお勧めします。

携帯電話でXMLを高品質でPDFに変換するにはどうすればよいですか? 携帯電話でXMLを高品質でPDFに変換するにはどうすればよいですか? Apr 02, 2025 pm 09:48 PM

携帯電話の高品質でXMLをPDFに変換する必要があります。クラウドでXMLを解析し、サーバーレスコンピューティングプラットフォームを使用してPDFを生成します。効率的なXMLパーサーとPDF生成ライブラリを選択します。エラーを正しく処理します。携帯電話の重いタスクを避けるために、クラウドコンピューティングの能力を最大限に活用してください。複雑なXML構造の処理、マルチページPDFの生成、画像の追加など、要件に応じて複雑さを調整します。デバッグを支援するログ情報を印刷します。パフォーマンスを最適化し、効率的なパーサーとPDFライブラリを選択し、非同期プログラミングまたは前処理XMLデータを使用する場合があります。優れたコードの品質と保守性を確保します。

携帯電話のXMLファイルをPDFに変換する方法は? 携帯電話のXMLファイルをPDFに変換する方法は? Apr 02, 2025 pm 10:12 PM

単一のアプリケーションで携帯電話でXMLからPDF変換を直接完了することは不可能です。クラウドサービスを使用する必要があります。クラウドサービスは、2つのステップで達成できます。1。XMLをクラウド内のPDFに変換し、2。携帯電話の変換されたPDFファイルにアクセスまたはダウンロードします。

See all articles