Miyazawa’s Pukiwiki
ブログ検索システム
はすでに存在します。
開始行:
#access
#analog
※ 以下は限定公開のドキュメントが多いです。ご不便おかけし...
&pgid(,RSSを使ったブログ・Wikiの解析);
*ブログ検索システム [#yea1dc2a]
-&pgid(,RSSを使ったブログ・Wikiの解析); の応用編として、h...
-目次
#contents
**URLデータベース設計 [#ffb208ee]
-MySQL のデータベース mkouki を使います。
mysql -u root -p
(パスワード)
use mkouki;
***RSSテーブル [#z8aa5229]
|BGCOLOR(white):RSSのアドレスのID |BGCOLOR(white):RSSのア...
|rss_id|rss_url|
-テーブルを作る
CREATE TABLE mysearch_rss( rss_id int auto_increment,
rss_url text character set utf8, index(rss_id) );
show tables;
--ここでは、カラム rss_id は[[オートインクリメント:http:/...
-データを追加
INSERT INTO mysearch_rss (rss_url)
VALUE('http://shower.human.waseda.ac.jp/~m-kouki/blog/at...
INSERT INTO mysearch_rss (rss_url)
VALUE('http://shower.human.waseda.ac.jp/~m-kouki/pukiwik...
select * from mysearch_rss limit 30;
--ここでは、手動でブログとwikiのRSSのアドレスを入れました...
***エントリーテーブル [#o7205775]
|BGCOLOR(white):エントリーのID |BGCOLOR(white):エントリー...
|entry_id|entry_title|entry_url|entry_type|entry_indexing|
--エントリーの属性は、とりあえず「記事0、書類1、プログラ...
--インデクシングがまだなら0、済みなら1、とりあえず今回の...
-テーブルを作る
CREATE TABLE mysearch_entry( entry_id int auto_increment,
entry_title text character set utf8,
entry_url text character set utf8,
entry_type int, entry_indexing int, index(entry_id) );
-RSSでは取得できない、トップページ以下のURLを、とりあえず...
select entry_id, entry_title, entry_type from mysearch_e...
**クローリング [#ca832b97]
***URLデータ更新 [#q535836e]
-RSSのURLを参考に、各エントリーのタイトルとURLを取得して...
--'''[[クラスパスを通して:http://shower.human.waseda.ac.j...
-プログラムの格納場所は、shower の mysearch/ とします。
-&color(red){entry_url カラムの設定を「[[重複禁止:http://...
***本文データ更新 [#lb5b5b0d]
-エントリーのURLを参考に、本文(とりあえずソースコード全...
--テキストファイル置き場を作って
mkdir /home/m-kouki/mysearch/filelog
--'''[[CrawlEntry.java:http://shower.human.waseda.ac.jp/~...
chmod 755 /home/m-kouki/mysearch/filelog/*
**検索 [#h996c7dc]
***検索窓 [#cfe3dbbc]
-[[ここ:http://shower.human.waseda.ac.jp/~m-kouki/]] のHT...
-検索窓に入力したクエリは '''[[mysearch.cgi:http://shower...
--プログラムの格納場所は、shower の public_html/cgi-bin/ ...
--[[パーミッションの設定:http://www7.big.or.jp/~jawa/tips...
--[[perl から シェルスクリプトを呼び出す危険性:http://www...
---検索窓の入力内容を、そのままシェルに引数で渡すのは危険...
-CGIではなく、Java サーブレットで実装する方法もあります(...
***キーワードマッチング [#k534f139]
-上のシェルスクリプトから、'''[[WordSearch.java:http://sh...
--プログラムの格納場所は、shower の public_html/cgi-bin/ ...
--パブリックな領域においたプログラムの中にパスワードを直...
--文字化け対処として、文字コードを指定可能なファイル入出...
---[[@IT:Javaの文字化け対策FAQ(3) DBや入力フォームで...
-ここまでの実行が終わったら、処理は再び '''[[mysearch.cgi...
***課題 [#f72d1cf2]
-&color(red){スペースで区切った複数のクエリに対して、AND...
-''&color(red){テキスト解析技術を使って、独自のサービスを...
**HTMLパース [#db98246a]
-[[HTMP Parser:http://www.mlab.im.dendai.ac.jp/~yamada/ir...
--[[ここ:http://htmlparser.sourceforge.net/]] の Download...
--lib フォルダ内の htmlparser.jar のみ使用します(クラス...
CLASSPATH=$CLASSPATH:/home/m-kouki/mysearch/htmlparser.jar
export CLASSPATH
-[[SimpleParser3.java:http://www.mlab.im.dendai.ac.jp/~ya...
--タイトルを取得するには
java SimpleParser3 http://shower.human.waseda.ac.jp/~m-k...
--本文を取得するには
java SimpleParser3 http://shower.human.waseda.ac.jp/~m-k...
---76行目 System.out.println("text: \"" + text.getText() ...
**URL追跡 [#cf956488]
-[[lynx:http://2php.jp/install/lynx.html]] を使って、トッ...
--RSS のない、[[トップページ:http://shower.human.waseda.a...
--「m-kouki」が含まれているアドレスのみを取得対象とします。
***lynx [#e857ded8]
-lynx でウェブページにアクセスするには、
lynx -dump http://shower.human.waseda.ac.jp/~m-kouki/
-
.
.
k-lab_wiki [23] 兇wiki
____________________________________________________...
Copyright(C) [24]MIYAZAWA Kouki All Rights Reserved.
繚
1. http://shower.human.waseda.ac.jp/~m-kouki/blog/
2. http://shower.human.waseda.ac.jp/~m-kouki/pukiwiki/...
3. http://shower.human.waseda.ac.jp/~m-kouki/reference...
4. http://shower.human.waseda.ac.jp/~m-kouki/kensyu/in...
5. http://shower.human.waseda.ac.jp/~m-kouki/collabora...
.
.
--指定したウェブサイトの文字コードが、[[lynx の設定ファイ...
---とりあえず今回は、最後のリンク情報が取得できればいいの...
-Basic認証付きのページにアクセスするには、
lynx -dump -auth=(ID):(パスワード) (URL)
-lynx に xml ファイルのアドレス(RSSなど)を指定すると、...
***java から呼び出す [#w6eacb0a]
-[[javafaq 外部コマンド呼出し:http://javafaq.jp/S103.html...
--CrawlLynxTest1.java
import java.io.*;
public class CrawlLynxTest1 {
public static void main(String[] args) {
try {
Process process = Runtime.getRuntime().exec
("lynx -dump http://shower.human.waseda.ac....
InputStream is = process.getInputStream();
BufferedReader br = new BufferedReader(new I...
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
is.close();
br.close();
} catch (Exception err) {
System.out.println(err);
}
}
}
***実装 [#hee9d6ae]
-lynx で指定したページのリンクを取得 → 取得したURLが存...
-トップページのURLを引数として、各エントリーのタイトル(...
--クラスパスを通して、'''[[CrawlLynx.java:http://shower.h...
CLASSPATH=$CLASSPATH:/home/m-kouki/mysearch/
mysql-connector-java-5.1.6/mysql-connector-java-5...
export CLASSPATH
java CrawlLynx m-kouki http://shower.human.waseda.ac.jp/...
---引数の意味 : http://shower.human.waseda.ac.jp/~m-kouk...
---CrawlRSS.java の実行後に行ってください。CrawlRSS.java ...
---タイトルの取得には、[[SimpleParser3.java:http://www.ml...
---エントリーの属性は、「書類(txt)1、プログラム(java, ...
--プログラムの格納場所は、shower の mysearch/ とします。
***改良すべき点 [#odcdd9fc]
-&color(red){lynx の代わりに HTML Parser で A タグのテキ...
-&color(red){時間がかかりすぎる。一度検索したリンクは検索...
**リンク切れを削除 [#m4bd3ba3]
-mysearch_entry テーブルの entry_url カラムを順番に取得し...
-ついでに、上の追跡検索でヒットしてしまう、検索対象にした...
--'''[[deletelinks_title.txt:http://shower.human.waseda.a...
--'''[[deletelinks_url.txt:http://shower.human.waseda.ac....
-'''[[DeleteLinks.java:http://shower.human.waseda.ac.jp/~...
--上のプログラム中で読み込む deletelinks_url.txt と delet...
**インデックスをつける [#c92c9a5f]
-&pgid(,Lucene導入メモ);
**HTML以外のファイルを取得する [#e3bc3957]
-'''[[CrawlEntry.java:http://shower.human.waseda.ac.jp/~m...
-以下は HTMLパーサでは「WARNING: URL ~~ does not contai...
***PDFファイルを取得 [#c43b2106]
-[[PDFビューア:http://shower.human.waseda.ac.jp/~m-kouki/...
--エントリーの属性が「3」だったときは、wget でダウンロー...
***PPTとWORDファイルを取得 [#jde4a6fc]
-[[たぽブログ » Word の .doc を .pdf に変換:http://www.fa...
***ZIPファイルを取得 [#jde4a6fc]
**検索 [#qe305258]
-'''[[WordSearch.java:http://shower.human.waseda.ac.jp/~m...
***検索窓でファイルの属性を指定する [#o80492f5]
***表記ゆれ対処 [#f34b8041]
-大文字・小文字など。
**定期クロール [#e6d9c592]
-RSS検索
cd /home/m-kouki/mysearch/
CLASSPATH=$CLASSPATH:informa.jar
CLASSPATH=$CLASSPATH:lib/commons-logging.jar
CLASSPATH=$CLASSPATH:lib/jdom.jar
CLASSPATH=$CLASSPATH:htmlparser.jar
CLASSPATH=$CLASSPATH:mysql-connector-java-5.1.6/mysql-co...
export CLASSPATH
java CrawlRSS
-追跡検索
java CrawlLynx m-kouki http://shower.human.waseda.ac.jp/...
java CrawlLynx m-kouki http://shower.human.waseda.ac.jp/...
-削除とファイルログ保存
java DeleteLinks
rm /home/m-kouki/mysearch/filelog/*
java CrawlEntry2
rm *.pdf*
chmod 755 /home/m-kouki/mysearch/filelog/*
***cronで自動化 [#odf25724]
-[[参考:http://shower.human.waseda.ac.jp/~m-kouki/pukiwik...
-cron コマンドに関して [#c2aab7e5]
--[[crontabで定期的自動実行:http://www9.plala.or.jp/sasak...
--/etc/cron は、shinzan には存在しない。
-ユーザ m-kouki のスケジュールを変更するには
$ crontab -u m-kouki -e
--エディタで、
# m h dom mon dow command
* * 14 6 6 date > date.txt
などとして、Ctrl+O → 「File Name to Write: 」はそのままで...
//CLASSPATH=$CLASSPATH:/home/m-kouki/mysearch/informa.jar
//CLASSPATH=$CLASSPATH:/home/m-kouki/mysearch/lib/commons...
//CLASSPATH=$CLASSPATH:/home/m-kouki/mysearch/lib/jdom.jar
//CLASSPATH=$CLASSPATH:/home/m-kouki/mysearch/htmlparser....
//CLASSPATH=$CLASSPATH:/home/m-kouki/mysearch/mysql-conne...
//CLASSPATH=$CLASSPATH:/home/m-kouki/mysearch/CrawlRSS
//export CLASSPATH
//
//java -cp /home/m-kouki/mysearch CrawlRSS
//
//java -cp /home/m-kouki/mysearch -jar /home/m-kouki/myse...
//Failed to load Main-Class manifest attribute from
終了行:
#access
#analog
※ 以下は限定公開のドキュメントが多いです。ご不便おかけし...
&pgid(,RSSを使ったブログ・Wikiの解析);
*ブログ検索システム [#yea1dc2a]
-&pgid(,RSSを使ったブログ・Wikiの解析); の応用編として、h...
-目次
#contents
**URLデータベース設計 [#ffb208ee]
-MySQL のデータベース mkouki を使います。
mysql -u root -p
(パスワード)
use mkouki;
***RSSテーブル [#z8aa5229]
|BGCOLOR(white):RSSのアドレスのID |BGCOLOR(white):RSSのア...
|rss_id|rss_url|
-テーブルを作る
CREATE TABLE mysearch_rss( rss_id int auto_increment,
rss_url text character set utf8, index(rss_id) );
show tables;
--ここでは、カラム rss_id は[[オートインクリメント:http:/...
-データを追加
INSERT INTO mysearch_rss (rss_url)
VALUE('http://shower.human.waseda.ac.jp/~m-kouki/blog/at...
INSERT INTO mysearch_rss (rss_url)
VALUE('http://shower.human.waseda.ac.jp/~m-kouki/pukiwik...
select * from mysearch_rss limit 30;
--ここでは、手動でブログとwikiのRSSのアドレスを入れました...
***エントリーテーブル [#o7205775]
|BGCOLOR(white):エントリーのID |BGCOLOR(white):エントリー...
|entry_id|entry_title|entry_url|entry_type|entry_indexing|
--エントリーの属性は、とりあえず「記事0、書類1、プログラ...
--インデクシングがまだなら0、済みなら1、とりあえず今回の...
-テーブルを作る
CREATE TABLE mysearch_entry( entry_id int auto_increment,
entry_title text character set utf8,
entry_url text character set utf8,
entry_type int, entry_indexing int, index(entry_id) );
-RSSでは取得できない、トップページ以下のURLを、とりあえず...
select entry_id, entry_title, entry_type from mysearch_e...
**クローリング [#ca832b97]
***URLデータ更新 [#q535836e]
-RSSのURLを参考に、各エントリーのタイトルとURLを取得して...
--'''[[クラスパスを通して:http://shower.human.waseda.ac.j...
-プログラムの格納場所は、shower の mysearch/ とします。
-&color(red){entry_url カラムの設定を「[[重複禁止:http://...
***本文データ更新 [#lb5b5b0d]
-エントリーのURLを参考に、本文(とりあえずソースコード全...
--テキストファイル置き場を作って
mkdir /home/m-kouki/mysearch/filelog
--'''[[CrawlEntry.java:http://shower.human.waseda.ac.jp/~...
chmod 755 /home/m-kouki/mysearch/filelog/*
**検索 [#h996c7dc]
***検索窓 [#cfe3dbbc]
-[[ここ:http://shower.human.waseda.ac.jp/~m-kouki/]] のHT...
-検索窓に入力したクエリは '''[[mysearch.cgi:http://shower...
--プログラムの格納場所は、shower の public_html/cgi-bin/ ...
--[[パーミッションの設定:http://www7.big.or.jp/~jawa/tips...
--[[perl から シェルスクリプトを呼び出す危険性:http://www...
---検索窓の入力内容を、そのままシェルに引数で渡すのは危険...
-CGIではなく、Java サーブレットで実装する方法もあります(...
***キーワードマッチング [#k534f139]
-上のシェルスクリプトから、'''[[WordSearch.java:http://sh...
--プログラムの格納場所は、shower の public_html/cgi-bin/ ...
--パブリックな領域においたプログラムの中にパスワードを直...
--文字化け対処として、文字コードを指定可能なファイル入出...
---[[@IT:Javaの文字化け対策FAQ(3) DBや入力フォームで...
-ここまでの実行が終わったら、処理は再び '''[[mysearch.cgi...
***課題 [#f72d1cf2]
-&color(red){スペースで区切った複数のクエリに対して、AND...
-''&color(red){テキスト解析技術を使って、独自のサービスを...
**HTMLパース [#db98246a]
-[[HTMP Parser:http://www.mlab.im.dendai.ac.jp/~yamada/ir...
--[[ここ:http://htmlparser.sourceforge.net/]] の Download...
--lib フォルダ内の htmlparser.jar のみ使用します(クラス...
CLASSPATH=$CLASSPATH:/home/m-kouki/mysearch/htmlparser.jar
export CLASSPATH
-[[SimpleParser3.java:http://www.mlab.im.dendai.ac.jp/~ya...
--タイトルを取得するには
java SimpleParser3 http://shower.human.waseda.ac.jp/~m-k...
--本文を取得するには
java SimpleParser3 http://shower.human.waseda.ac.jp/~m-k...
---76行目 System.out.println("text: \"" + text.getText() ...
**URL追跡 [#cf956488]
-[[lynx:http://2php.jp/install/lynx.html]] を使って、トッ...
--RSS のない、[[トップページ:http://shower.human.waseda.a...
--「m-kouki」が含まれているアドレスのみを取得対象とします。
***lynx [#e857ded8]
-lynx でウェブページにアクセスするには、
lynx -dump http://shower.human.waseda.ac.jp/~m-kouki/
-
.
.
k-lab_wiki [23] 兇wiki
____________________________________________________...
Copyright(C) [24]MIYAZAWA Kouki All Rights Reserved.
繚
1. http://shower.human.waseda.ac.jp/~m-kouki/blog/
2. http://shower.human.waseda.ac.jp/~m-kouki/pukiwiki/...
3. http://shower.human.waseda.ac.jp/~m-kouki/reference...
4. http://shower.human.waseda.ac.jp/~m-kouki/kensyu/in...
5. http://shower.human.waseda.ac.jp/~m-kouki/collabora...
.
.
--指定したウェブサイトの文字コードが、[[lynx の設定ファイ...
---とりあえず今回は、最後のリンク情報が取得できればいいの...
-Basic認証付きのページにアクセスするには、
lynx -dump -auth=(ID):(パスワード) (URL)
-lynx に xml ファイルのアドレス(RSSなど)を指定すると、...
***java から呼び出す [#w6eacb0a]
-[[javafaq 外部コマンド呼出し:http://javafaq.jp/S103.html...
--CrawlLynxTest1.java
import java.io.*;
public class CrawlLynxTest1 {
public static void main(String[] args) {
try {
Process process = Runtime.getRuntime().exec
("lynx -dump http://shower.human.waseda.ac....
InputStream is = process.getInputStream();
BufferedReader br = new BufferedReader(new I...
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
is.close();
br.close();
} catch (Exception err) {
System.out.println(err);
}
}
}
***実装 [#hee9d6ae]
-lynx で指定したページのリンクを取得 → 取得したURLが存...
-トップページのURLを引数として、各エントリーのタイトル(...
--クラスパスを通して、'''[[CrawlLynx.java:http://shower.h...
CLASSPATH=$CLASSPATH:/home/m-kouki/mysearch/
mysql-connector-java-5.1.6/mysql-connector-java-5...
export CLASSPATH
java CrawlLynx m-kouki http://shower.human.waseda.ac.jp/...
---引数の意味 : http://shower.human.waseda.ac.jp/~m-kouk...
---CrawlRSS.java の実行後に行ってください。CrawlRSS.java ...
---タイトルの取得には、[[SimpleParser3.java:http://www.ml...
---エントリーの属性は、「書類(txt)1、プログラム(java, ...
--プログラムの格納場所は、shower の mysearch/ とします。
***改良すべき点 [#odcdd9fc]
-&color(red){lynx の代わりに HTML Parser で A タグのテキ...
-&color(red){時間がかかりすぎる。一度検索したリンクは検索...
**リンク切れを削除 [#m4bd3ba3]
-mysearch_entry テーブルの entry_url カラムを順番に取得し...
-ついでに、上の追跡検索でヒットしてしまう、検索対象にした...
--'''[[deletelinks_title.txt:http://shower.human.waseda.a...
--'''[[deletelinks_url.txt:http://shower.human.waseda.ac....
-'''[[DeleteLinks.java:http://shower.human.waseda.ac.jp/~...
--上のプログラム中で読み込む deletelinks_url.txt と delet...
**インデックスをつける [#c92c9a5f]
-&pgid(,Lucene導入メモ);
**HTML以外のファイルを取得する [#e3bc3957]
-'''[[CrawlEntry.java:http://shower.human.waseda.ac.jp/~m...
-以下は HTMLパーサでは「WARNING: URL ~~ does not contai...
***PDFファイルを取得 [#c43b2106]
-[[PDFビューア:http://shower.human.waseda.ac.jp/~m-kouki/...
--エントリーの属性が「3」だったときは、wget でダウンロー...
***PPTとWORDファイルを取得 [#jde4a6fc]
-[[たぽブログ » Word の .doc を .pdf に変換:http://www.fa...
***ZIPファイルを取得 [#jde4a6fc]
**検索 [#qe305258]
-'''[[WordSearch.java:http://shower.human.waseda.ac.jp/~m...
***検索窓でファイルの属性を指定する [#o80492f5]
***表記ゆれ対処 [#f34b8041]
-大文字・小文字など。
**定期クロール [#e6d9c592]
-RSS検索
cd /home/m-kouki/mysearch/
CLASSPATH=$CLASSPATH:informa.jar
CLASSPATH=$CLASSPATH:lib/commons-logging.jar
CLASSPATH=$CLASSPATH:lib/jdom.jar
CLASSPATH=$CLASSPATH:htmlparser.jar
CLASSPATH=$CLASSPATH:mysql-connector-java-5.1.6/mysql-co...
export CLASSPATH
java CrawlRSS
-追跡検索
java CrawlLynx m-kouki http://shower.human.waseda.ac.jp/...
java CrawlLynx m-kouki http://shower.human.waseda.ac.jp/...
-削除とファイルログ保存
java DeleteLinks
rm /home/m-kouki/mysearch/filelog/*
java CrawlEntry2
rm *.pdf*
chmod 755 /home/m-kouki/mysearch/filelog/*
***cronで自動化 [#odf25724]
-[[参考:http://shower.human.waseda.ac.jp/~m-kouki/pukiwik...
-cron コマンドに関して [#c2aab7e5]
--[[crontabで定期的自動実行:http://www9.plala.or.jp/sasak...
--/etc/cron は、shinzan には存在しない。
-ユーザ m-kouki のスケジュールを変更するには
$ crontab -u m-kouki -e
--エディタで、
# m h dom mon dow command
* * 14 6 6 date > date.txt
などとして、Ctrl+O → 「File Name to Write: 」はそのままで...
//CLASSPATH=$CLASSPATH:/home/m-kouki/mysearch/informa.jar
//CLASSPATH=$CLASSPATH:/home/m-kouki/mysearch/lib/commons...
//CLASSPATH=$CLASSPATH:/home/m-kouki/mysearch/lib/jdom.jar
//CLASSPATH=$CLASSPATH:/home/m-kouki/mysearch/htmlparser....
//CLASSPATH=$CLASSPATH:/home/m-kouki/mysearch/mysql-conne...
//CLASSPATH=$CLASSPATH:/home/m-kouki/mysearch/CrawlRSS
//export CLASSPATH
//
//java -cp /home/m-kouki/mysearch CrawlRSS
//
//java -cp /home/m-kouki/mysearch -jar /home/m-kouki/myse...
//Failed to load Main-Class manifest attribute from
ページ名:
既存のページ名で編集する