Agile – 増加型開発と反復型開発)
増加型開発と反復型開発
反復型開発(イテレーティブな開発:iterative development)
増加型開発(インクリメンタルな開発:incremental development)
反復増加型開発(イテレーティブでインクリメンタルな開発:iterative and incremental development:IID)
Agile
メモ
- 反復型開発と増加型開発
イテレーティブな開発とインクリメンタルな開発。IID.
リンク
初代googleのアーキテクチャ_検索処理の作成_単純検索
処理の流れ
[[Googleを支える技術:http://www.amazon.co.jp/dp/4774134325]]
1章 1.5 検索サーバー P34 図1.26 検索の流れより
2.検索後がLexiconによってwordIDに変換される
3.wordIDを転置インデックス(Barrels)から検索し、docIDのリストを得る
4.得られたdocIDのすべてにランキング関数を適用し、点数の高い順に並び替える
5.ランキング上位のdocIDのそれぞれについて、WEBページの情報を取り出す
6.得られた情報を見やすい結果に整え、利用者に返す
テーブル構造は[[PHPとWEBサービスを使って初代googleのアーキテクチャを勉強する]]の図を参照
ひながた(search.php)
実行はブラウザからアクセスして検索キーを入力してサブミットボタンをクリック(またはEnterキー)
めんどくさいからサニタイズしない。
文字コードはeuc。
データベースアクセスはPDO。
ここではキーワードは一つだけに対応。
”PageRank”非対応
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=euc-jp">
<title>phpgoogle</title>
</head>
<body>
<?php
$keyword = $_GET{"keyword"};
print<<<EOF
<form action="search.php">
<input type="text" name="keyword" value="{$keyword}"><input type="submit">
</form>
EOF;
if(empty($keyword)){
die();
}
function createPdo(){
return new PDO("mysql:host=localhost; dbname=google", "root", "");
}
// ここに処理
?>
</body>
</head>
単純。
検索後をwordIDに変換
$wordId = array();
try{
$pdo = createPdo();
$stmt = $pdo->prepare("select id from lexicon where word = :word");
$stmt->bindValue(":word", $keyword);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
$lexiconId = $result{"id"};
}catch(PDOException $e){
var_dump($e->getMessage());
die();
}
// 切断
$pdo = null;
print_r($lexiconId);
wordIDによるBarrelsテーブルの検索
docIDのリストを取得する。
// barrels →docindex
try{
$pdo = createPdo();
$stmt = $pdo->prepare("select distinct doc_id from barrels where lexicon_id = :lexicon_id");
$stmt->bindValue(":lexicon_id", $lexiconId);
$stmt->execute();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$docIdList[] = $row{"doc_id"};
}
}catch(PDOException $e){
var_dump($e->getMessage());
die();
}
// 切断
$pdo = null;
print_r($docIdList);
docIDをもとにDocIndexを検索
WEBページの詳細情報を取得する。
$pdo = createPdo();
foreach($docIdList as $docId){
try{
$stmt = $pdo->prepare("select title from docindex where id = :doc_id");
$stmt->bindValue(":doc_id", $docId);
$stmt->execute();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$docIndex = array();
$docIndex{"title"} = $row{"title"};
$docIndex{"url"} = $row{"url"};
$docList[] = $docIndex;
}
}catch(PDOException $e){
var_dump($e->getMessage());
die();
}
}
// 切断
$pdo = null;
print_r($docList);
結果表示
これはもう単純に。
die();
}
foreach($docList as $docIndex){
print<<<EOF
<hr>
{$docIndex{"title"}}
<br>
{$docIndex{"url"}}
EOF;
}
print "<hr>";
実行結果

ソースコード
-[[PHPとWEBサービスを使って初代googleのアーキテクチャを勉強する/ソースコード/検索処理の作成(単純検索)]]

