質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Lucene

LeceneはJavaで記述されている全文検索エンジンのライブラリを指します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

837閲覧

【Lucene】出力する値をカタカナ変換できるようにしたい

k499778

総合スコア599

Lucene

LeceneはJavaで記述されている全文検索エンジンのライブラリを指します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2020/04/07 15:24

編集2020/04/08 06:12

前提・実現したいこと

Luceneを使って形態素解析のプログラムを作成しています。
出力する値をカタカナ変換できるようにしたいです。
バージョンはLucene4.8.1です。

例) 今日は雨です。 ⇓ キョウ ハ アメ デス 。

参考にしているサンプルをプロジェクトに移行しましたがコンパイルエラーになってしまいます。
https://github.com/mwsoft/sample/blob/master/solr-filter-sample/src/jp/mwsoft/sample/lucene/filter/JapaneseReadingFormFilterSample.java
またバージョン違いによりメソッドも変わっているような気がします。

発生している問題・エラーメッセージ

現状、サンプルコードをそのまま転機すると以下のコンパイルエラーになります。継承に関するメソッドを実装してもさらにコンパイルエラーが出てしまいます。また、Lucene4.8.1で動くようにしたいです。もしかしたらメソッドが少し変わっているかもしれません。

試したこと

サンプルを修正してエラーの対処をしていきましたが、Lucene4.8.1に適合させることができませんでした。

補足情報(FW/ツールのバージョンなど)

開発環境:Eclipse4.8.0
言語:Java1.7
Java用プロジェクト管理ツール:Maven1.7
全文検索ソフトウェア:Lucene4.8.1

↓pom.xml

pom.xml

1<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 3 <modelVersion>4.0.0</modelVersion> 4 5 <groupId>net.comici.jp</groupId> 6 <artifactId>analyzer-sample</artifactId> 7 <version>1.0-SNAPSHOT</version> 8 <packaging>jar</packaging> 9 10 <name>analyzer-sample</name> 11 <url>https://comici.jp</url> 12 13 <properties> 14 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 15 </properties> 16 17 <build> 18 <plugins> 19 <plugin> 20 <groupId>org.apache.maven.plugins</groupId> 21 <artifactId>maven-compiler-plugin</artifactId> 22 <configuration> 23 <source>1.7</source> 24 <target>1.7</target> 25 </configuration> 26 </plugin> 27 <plugin> 28 <groupId>org.codehaus.mojo</groupId> 29 <artifactId>exec-maven-plugin</artifactId> 30 <version>1.3</version> 31 <executions> 32 <execution> 33 <goals> 34 <goal>java</goal> 35 </goals> 36 </execution> 37 </executions> 38 <configuration> 39 <mainClass>net.comici.test.AnalyzerSample</mainClass> 40 </configuration> 41 </plugin> 42 </plugins> 43 </build> 44 45 <dependencies> 46 <dependency> 47 <groupId>org.apache.lucene</groupId> 48 <artifactId>lucene-analyzers-kuromoji</artifactId> 49 <version>4.8.1</version> 50 </dependency> 51 <dependency> 52 <groupId>junit</groupId> 53 <artifactId>junit</artifactId> 54 <version>3.8.1</version> 55 <scope>test</scope> 56 </dependency> 57 </dependencies> 58</project> 59 60

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Lucene について検索しながら弄った結果, 以下のようになりましたが如何でしょうか.

java

1//package teratail.q252075; 2 3import java.io.Reader; 4 5import org.apache.lucene.analysis.*; 6import org.apache.lucene.analysis.ja.*; 7import org.apache.lucene.analysis.ja.tokenattributes.ReadingAttribute; 8 9public class JapaneseReadingFormFilterSample { 10 11 public static void main(String[] args) throws Exception { 12 13 try(Analyzer analyzer = new MyAnalyzer()) { 14 15 String str = "疲れたろう。僕も疲れたんだ。"; 16 17 TokenStream tokenStream = analyzer.tokenStream("", str); 18 ReadingAttribute readingAttr = tokenStream.addAttribute(ReadingAttribute.class); 19 20 tokenStream.reset(); 21 while(tokenStream.incrementToken()) { 22 System.out.print(readingAttr.getReading() + "\t"); 23 } 24 } 25 // => ツカレ タロ ウ ボク モ ツカレ タ ン ダ 26 } 27 28 static class MyAnalyzer extends Analyzer { 29 @Override 30 protected TokenStreamComponents createComponents(String fieldName, Reader reader) { 31 Tokenizer tokenazer = new JapaneseTokenizer(reader, null, true, JapaneseTokenizer.Mode.NORMAL); 32 TokenStream tokenStream = new JapaneseReadingFormFilter(tokenazer, true); 33 return new TokenStreamComponents(tokenazer, tokenStream); 34 } 35 } 36}

投稿2020/04/08 12:31

jimbe

総合スコア12646

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k499778

2020/04/08 13:44

ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問