CyberChaos(さいばかおす)

プログラミング言語、トランスパイラ、RPA、ChatGPT、データマイニング、リバースエンジニアリングのための忘備録

Cockroach DBで日本語全文検索を行うGUIアプリのPythonソースコード

2025-03-01 04:08:52 | SQL
CockroachDBで日本語全文検索を行うGUIアプリをPythonで作成するには、以下のステップを踏む必要があります。

1. **CockroachDBとの接続**: CockroachDBに接続し、データを取得または保存します。
2. **日本語全文検索の実装**: 日本語の形態素解析を行い、全文検索を実現します。
3. **GUIの作成**: PythonのGUIライブラリ(例: Tkinter, PyQt)を使ってユーザーインターフェースを作成します。

以下は、Tkinterを使ったシンプルなGUIアプリの例です。このアプリは、CockroachDBに接続し、日本語のテキストを検索する機能を提供します。

### 必要なライブラリのインストール
まず、必要なライブラリをインストールします。

```bash
pip install tkinter psycopg2-binary nltk
```

### ソースコード

```python
import tkinter as tk
from tkinter import messagebox
import psycopg2
from psycopg2 import sql
import nltk
from nltk.tokenize import word_tokenize

# NLTKの日本語用リソースをダウンロード
nltk.download('punkt')

# CockroachDB接続情報
DB_HOST = 'your-cockroachdb-host'
DB_PORT = 26257
DB_NAME = 'your-database'
DB_USER = 'your-username'
DB_PASSWORD = 'your-password'

# CockroachDBに接続
def connect_db():
try:
conn = psycopg2.connect(
host=DB_HOST,
port=DB_PORT,
dbname=DB_NAME,
user=DB_USER,
password=DB_PASSWORD,
sslmode='require'
)
return conn
except Exception as e:
messagebox.showerror("接続エラー", f"データベース接続に失敗しました: {e}")
return None

# 日本語全文検索
def search_text():
search_query = entry.get()
if not search_query:
messagebox.showwarning("警告", "検索クエリを入力してください")
return

# 日本語の形態素解析
tokens = word_tokenize(search_query, language='japanese')
search_tokens = [token for token in tokens if token.isalnum()] # 英数字のみを抽出

if not search_tokens:
messagebox.showwarning("警告", "有効な検索キーワードが見つかりません")
return

# CockroachDBに接続
conn = connect_db()
if not conn:
return

try:
with conn.cursor() as cur:
# 検索クエリを作成
query = sql.SQL("SELECT * FROM your_table WHERE ")
conditions = []
for token in search_tokens:
conditions.append(sql.SQL("your_column ILIKE {}").format(sql.Literal(f'%{token}%')))
query = query + sql.SQL(" OR ").join(conditions)

# クエリを実行
cur.execute(query)
results = cur.fetchall()

# 結果を表示
result_text.delete(1.0, tk.END)
if results:
for row in results:
result_text.insert(tk.END, f"{row}\n")
else:
result_text.insert(tk.END, "該当する結果が見つかりませんでした。")
except Exception as e:
messagebox.showerror("検索エラー", f"検索中にエラーが発生しました: {e}")
finally:
conn.close()

# GUIアプリの作成
app = tk.Tk()
app.title("CockroachDB 日本語全文検索アプリ")

# 検索クエリ入力欄
label = tk.Label(app, text="検索クエリを入力してください:")
label.pack(pady=10)
entry = tk.Entry(app, width=50)
entry.pack(pady=10)

# 検索ボタン
search_button = tk.Button(app, text="検索", command=search_text)
search_button.pack(pady=10)

# 検索結果表示欄
result_text = tk.Text(app, height=20, width=80)
result_text.pack(pady=10)

# アプリを実行
app.mainloop()
```

### コードの説明
1. **CockroachDB接続**:
- `psycopg2`を使ってCockroachDBに接続します。
- 接続情報は環境に合わせて変更してください。

2. **日本語全文検索**:
- `nltk`ライブラリを使って日本語の形態素解析を行います。
- 検索クエリをトークン化し、CockroachDBで部分一致検索を行います。

3. **GUI**:
- `tkinter`を使ってシンプルなGUIを作成します。
- 検索クエリを入力し、検索結果を表示します。

### 注意点
- CockroachDBのテーブル名やカラム名は、環境に合わせて変更してください。
- 日本語の形態素解析は`nltk`の`word_tokenize`を使用していますが、精度を高めるために`MeCab`や`Janome`などのライブラリを利用することも検討してください。
- 本番環境では、データベース接続情報を環境変数や設定ファイルに保存し、セキュリティを確保してください。

このコードをベースに、必要に応じて機能を拡張してください。


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。