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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

1321閲覧

htmlでMySQLのデータを検索してリンクを貼る

hana0102

総合スコア12

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2017/04/24 06:48

あるサイトを作っています。

MySQLで2種のテーブルがあり、ひとつは語句、もうひとつは文章のカラムがみっつ。
idで結ばれています。
検索された語句と結ばれている3行の文章を呼んで表示させています。
その3行の中に罰の語句が含まれていれば、検出してその語句のページに飛べるようリンクを貼りたいのですが、方法が思いつきません。


語句 あんぱん とは?
文章 菓子パンの種類。
あんこが入っている。
こしあんつぶあんで分かれる。

あんぱんの説明です。
語句のテーブルに「菓子パン」が存在していたら、
「菓子パンとは?」のページに飛べるようにしたいです。

説明が下手で申し訳ないのですがアドバイスをお願いします。

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

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

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

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

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

kunai

2017/04/24 07:14

すみません、何がわからないのかが分からないのですが、MySQLから検索するSQLが不明なのでしょうか。RubyからMySQLへ接続し、SQLを投げて結果を取得する方法がわからないのでしょうか。Rubyでリンクを生成する方法がわからないのでしょうか。とりあえずご自身で作っているところまでのコードを提示いただけないでしょうか。
hana0102

2017/04/24 07:22

初心者なもので、いまいち何が分からないのかも分からない状態で...。
guest

回答1

0

ベストアンサー

色々な工夫があると思いますが、比較的簡単と思えるアイデアを・・・

3行の文章を登録する際に「DB中に含まれる単語」を特別な記号で囲むようにします。

例:
文章 <菓子パン>の種類。
<あんこ>が入っている。
<こしあん><つぶあん>で分かれる。

HTML上のタグと同様、文章中に'<'や'>'を含めたい場合はエスケープするようなルールを設けます。'<'とか'>'などを使う例のあれです。

さて、文章をDBから取り出した後、'<'と'>'に挟まれた単語を取り出す処理を行うことにしましょう。そうするとその単語の位置と単語そのものがわかります。このサイトの辞書ページが

/dict/単語

でアクセスできるとすれば上記の文章を以下のようにアンカータグに置き換えて結果のHTMLを生成するというふうにすれば望むページがとりあえず出来上がります。

文章 <a href="/dict/菓子パン">菓子パン</a>の種類。
...

もちろんhrefの中の単語名の部分はURL encodeする必要があるでしょう(あるのかな?)。

文章 <a href="/dict/%89%D9%8Eq%83p%83%93">菓子パン</a>の種類。

  • 単語が実際にあるかどうか

説明文を作る際にあらかじめ全ての登録済み単語がわかっていたとしても人間がそれをチェックするのは非常に面倒ですね。しかし考え方として「DBへ登録されているべきしかるべき単語」ということを人間が判断して'<>'でくくってしまってもよいでしょう。wikipediaを見ていると「しかるべき単語」のリンクが張られていても実際にリンクを辿ると「未登録単語」になってたりしますね・・・そういうものがあってもかまわないという考え方もできると思います。
もしそうしたリンク切れをユーザーに見せたくないとしたら、文章を整形する際に得られた単語一覧をDB登録済みかどうかチェックする方法もありますが、辞書をアクセスする度にそれを行うのはいささか効率が悪いでしょう。本当にそういう配慮がしたければバッチで全レコードに対して一括でチェックして「不要な<>を取り去る」ということをするべきだと思います。

  • 登録されている単語を<>で囲み忘れた

それを機械的にチェックするには形態素解析などをしないと「ヘンテコな単語を間違って取り出す」恐れが出てしまうので人間がチェックするという妥協でもよいと思います。

投稿2017/04/24 07:13

編集2017/04/24 10:19
KSwordOfHaste

総合スコア18394

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

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

hana0102

2017/04/24 07:19

回答ありがとうございます。 すでに登録されている文章の中から探すというのは難しいでしょうか。 文章自体をサイトのユーザーが登録するシステムなんです。 言葉足らずで申し訳ありません。
KSwordOfHaste

2017/04/24 10:19 編集

上にもちょっと書きましたが、文章を形態素解析せずに機械的に文字の羅列として扱ってしまうとおかしな単語が取り出せてしまいます。たとえば「維新」という単語が登録されているけど、単語説明が「化物語 - 西尾維新の小説・・・」なんてなっていたときに機械的に「維新」をリンクに置き換えられても不自然なわけです。多分人間がチェックするwikipedia方式が一番それらしくリンクが貼れると思います。 --- 質問者さんはDBに登録済みの単語を文章から自動的に切り出すには・・・という観点で質問されたとは思うのですが、実際にやってみたときのことを想定してこういう意見を言っております。ただ、そうしたことはとりあえず脇に置いて「技術的な検討としてDB登録済みの単語を使って機械的に抽出するとしたらどんな方法になるか」を検討してみても思考実験としてはよいと思います。
hana0102

2017/04/24 07:27

なるほど。 おかしな部分までリンクになってしまうのですね。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問