Class: MecabParser

Inherits:
BaseService show all
Defined in:
app/services/mecab_parser.rb

Overview

MeCab を使用してテキストを解析するためのサービスクラス。

Class Method Summary collapse

Class Method Details

.execute(text) ⇒ Result

指定されたテキストを MeCab で形態素解析し、結果を返します。解析結果はキャッシュされ、1 時間有効です。

Parameters:

  • text (String)

    解析対象のテキスト。

Returns:

  • (Result)

    処理結果オブジェクト。- success? [Boolean] 処理が成功した場合は true、失敗した場合は false。- payload [Array<Hash>, nil] 成功時には形態素解析の結果の配列。各ハッシュは以下のキーを持ちます: - :surface [String] 表層形。 - :feature [String] 品詞などの素性情報。 失敗時には nil。- error [String, nil] 失敗時にはエラーメッセージ。成功時には nil

Raises:

  • (MecabParseError)

    内部の parse メソッドでエラーが発生した場合に再スローされます。



15
16
17
18
19
20
21
22
23
24
25
# File 'app/services/mecab_parser.rb', line 15

def self.execute(text)
  return Result.new(success?: true, payload: []) if text.blank?

  payload = Rails.cache.fetch(text, expires_in: 1.hours) do
    self.parse text
  end
  Result.new(success?: true, payload: payload)
rescue MecabParseError => e
  Rails.logger.error("[#{self.name}] 解析に失敗しました: #{e.message}")
  Result.new(success?: false, error: e.message)
end