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

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

新規登録して質問してみよう
ただいま回答率
85.50%
検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

Q&A

解決済

3回答

1815閲覧

検索キーワードが英語なら正常に動作するが、日本語ではNULLとなってしまう

hanzoo

総合スコア28

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

0グッド

0クリップ

投稿2016/03/14 13:18

編集2016/03/15 11:13

英語をキーワードとした検索と、日本語をキーワードにした検索と、何か違いがあるのでしょうか。
ある記事保存アプリを使用中、以下のような経験をしたことから、こちらに質問しました。

保存した記事内に存在するキーワードを検索する

  • 日本語のキーワード(=>『NULL』と表示される。)
  • 英語のキーワード(=>〇〇件ヒットと表示される)

保存した記事内に存在しないキーワードを検索する

  • 日本語のキーワード(=>『NULL』と表示される。)
  • 英語のキーワード(=>『検索結果がありません』と表示される。)

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

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

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

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

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

guest

回答3

0

アプリの開発企業にメールし、返信がありました。
技術的な回答はありませんでしたが、今まで認識されていなかった問題だったようで、
今年中に解決する課題に追加したと返信がありました。

以上で、解決済み扱いにします。ありがとうございました。

投稿2016/03/20 10:43

hanzoo

総合スコア28

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

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

0

自己解決

(この文章において、『言語』というのは自然言語を指しています。)
##英語をキーワードとした検索と、日本語をキーワードにした検索の違い
(キーワードの検索対象となる)テキスト情報の解析において、英語と日本語の特徴が異なる為、発生する問題に違いがあります。

##どのような問題があるのか
日本語の場合、意味を持った最小単位の言葉に区切ることが、英語に比べて難しいという問題です。
通常、文章において英語を含む多くの言語は、語の区切りに空白を挟み、単語が記述されていますが、
日本語には同様の必ずしも同じ特徴ではない為、英語に比べ、単語の境界判別が難しくなります。

##参考にしたURLの中に、以下のような記述がありました。

現在、MySQLには日本語環境で使用するための十分な全文検索機能が実装されていません。

(略)

なぜこのようなことが起きるかというと、これはMySQLの全文検索(FULLTEXT)インデックスのキーワード抽出を行うパーサが「半角スペースで区切られているものをキーワードとして認識する」という実装になっているためです。欧米の言語は通常、単語と単語の間は半角スペースで区切られていますので機能しますが、日本語の場合はそうではないためキーワードの抽出を行えません。

(略)

また、MySQLの日本語対応について、以下のような記述もありました。

このような問題点はMySQL+Sennaの組み合わせで、解決することができます。

Sennaとはオープンソースの全文検索エンジンです。Sennaを使用することで、全文検索インデックスのキーワード抽出にあたって、形態素解析(mecabを使用)やn-gramといった手法が使用できる為、MySQLにおいても日本語のテキストに対して有効なインデックスを作成することが可能となります。

##私見
検索エンジンには、日本語対応しているものとそうでないものがあり、
検索対象となる言語の、特徴に適した文字の解析手法を使用する必要があるんですね。
なんというか、英語でも日本語でも、大した違いもなく、当たり前のようにキーワード検索出来るものと考えていました。

今回のアプリ使用の経験の例にすると、もちろん、アプリ固有の問題である可能性も考えられるのですが
検索結果が英語と日本語によって異なることから、文字解析手法の違いによる問題に対応出来ていない検索エンジンによって発生しているエラーの可能性があるのかもしれないと思いました。

参考URL

MySQL+Sennaによる日本語全文検索|全文検索ソリューション|製品|MySQL
形態素解析 - 日本語の形態素解析における諸問題 - Weblio辞書
形態素解析 - Wikipedia

投稿2016/03/15 15:20

hanzoo

総合スコア28

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

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

0

そのアプリを作った人に聞いて下さい。他人には回答不能です。

投稿2016/03/14 14:08

otn

総合スコア84423

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

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

hanzoo

2016/03/15 10:01

回答ありがとうございます。 使用したアプリ固有の問題解決に限定している質問ではありません。 アプリを使用した際に、英語をキーワードにした検索と、日本語をキーワードにした検索が異なることをきっかけに 検索に使用する言語によって、検索エンジンが抱える問題に、何か違いがあるのではないかと考えたため質問しました。
otn

2016/03/15 13:09

> 検索に使用する言語によって、検索エンジンが抱える問題に、何か違いがあるのではないかと考えたため質問しました。 それはそのアプリを書いた人がどういうロジックのプログラムを書いているかによります。 つまり、アプリを書いた人に聞くしか無いです。 別の言い方をすると、アプリに依存しない一般論としての問題はありません。ちゃんと作られたアプリは英語でも日本語でも問題なく処理出来ます。
hanzoo

2016/03/15 15:35 編集

> 別の言い方をすると、アプリに依存しない一般論としての問題はありません。ちゃんと作られたアプリは英語でも日本語でも問題なく処理出来ます。 確かにおっしゃる通りだと思いました。 そもそも、アプリケーションを開発された企業に問い合わせをし、 企業から具体的な回答を聞ければ、素早く確かな情報を得ることができたと思います。 otnさんの回答を頂いたことで、もしまたそのアプリを利用したいと思うなら、 その企業に問い合わせてみても良いかもしれないと思いました。 自己解決欄については、あくまで推測になってしまうのですが、 発生している問題の観察から、仮説を立てるところまである程度形になったかと思い、記載をしました。 質問について回答頂き、ありがとうございました! また機会がありましたら、是非回答を頂けると本当に嬉しいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問