nDiki : 検索エンジン

検索エンジン / サーチエンジン - search engine

関連情報

2007年1月21日 (日)

Wiki ではロボット除けをしてはいけない

昨日土曜日から nDiki を含め www.naney.org のアクセス数が激減している。 Google Analytics でみてみると先週の半分以下。 細かくみてみると Google 経由のアクセスが 3分の1になっている。

Google検索してみると今まで上位であった検索結果がことごとくランク外に。 先週土曜日に行った検索エンジン対応のための一部ページへの robots メタタグの追加とそれらのページへのリンクへの nofollow の追加が裏目に出たらしい。

Wiki の過去のリビジョンのページや編集ページなどが予想以上にサイト全体の PageRank を下支えしていたようだ。

あわててこれらの設定を外す。

元に戻るにはまたそれなりにかかるだろう。 ショック。


[ SEO ]

スポンサード リンク
[ 1月21日全て ]

2007年2月2日 (金)

DiKickergrep 検索機能を追加

DiKicker には自動リンクベースの記事串刺し表示機能があって、同じキーワードを含む記事をまとめて読むことができる。 結構便利なのだが、この機能ではキーワードの設定は Blog の書き手に委ねられている。

社内で DiKicker を一部使ってもらっているのだけれども、それら他人の Blog を読んでいると「あのキーワードで串刺し表示したいな」と思うことがしばしばあることに気がついた。 やはり任意の文字列で串刺し表示する機能が欲しい。

書き手にとっても「自動リンクキーワードにするような文字列ではないけれども、串刺しで読みたい/探したい/見せたい」と思うことが少なからずある。

ということで、検索ベースの串刺し表示機能を実装してみた。

grep ベース

実現には全文検索を行う必要があるが「設置・運用の手間」「ディスク容量」という点から、事前にインデックスを生成するような方法は今回は避けようと思う (www.naney.org 上で自分が使う上での制約からくる理由が一番大きかったりする)。

ということで今回は grep 型で実装することにした。 もともと WiKicker の方の検索機能も現在のところ grep 型である。 WiKicker では自前で WikiPage をスキャンしているが、DiKicker では grep コマンドに任せることにした。 こういうのは専用の grep を使った方が速いはず。呼び出しは

 grep -Flre $escaped_string dir...

というオプション指定。Web ページとしてのページングなどは、自動リンクによる串刺し表示機能のものを流用。

で試したところ www.naney.org サーバでは、load averages が 1 以下の時でだいたい50秒前後。対象ファイル数は 2800弱。予想より時間がかかる。

ただし1回実行した後、ファイルがファイルシステム/OSメモリ上にのっている状態では 0.1秒程度で完了する。

検索結果ページの permalink が検索エンジンにそれなりに捕捉されて、定期的にアクセスがあるようになれば、ファイルがメモリにのっている割合が増えるであろうから平均して実用に耐えられる速度が出るかもしれない。

今後は様子をみながら検索結果のキャッシュ等を処理を整備していく予定。

[ 2月2日全て ]

2007年5月30日 (水)

WiKicker 0.420 リリース - 変更いろいろ

去年の12月3日以来、約半年ぶりのリリース。 リリースしそびれて、随分変更を累積してしまった。 以下主な変更点。

バージョン番号形式を変更

前回の 0.41 に対して、今回は 0.420 とした。 浮動小数点数的には、増分 0.01 で今まで通り。

今後 version.pm が普及した時のことと、developer release を出す時のことを考えて小数点以下3桁ずつのスタイルに移行することにした (関連記事)。

<meta name="robots" content="noindex,nofollow">

2007年1月に実装。 編集ページや履歴ページが検索エンジンに登録されないようにするための機能。

<a rel="nofollow">

2007年1月に実装。 リンク spam 対応。

AutomaticLink 長を可変にした

2007年3月に実装。 特に DiKicker で1文字キーワードによる自動リンクを有効にするために追加した。

'/' の前を省略した自動リンクを有効にするか無効にするかを設定できるように

前述の機能で1文字での自動リンクを有効にしたら、不便な面が出た。

WiKicker / DiKicker では '/' を階層の区切り文字としても扱うことができるようになっていて、サフィックス部分だけでも自動リンクするようになっている。 自動リンクを1文字にしたら「OS/2」というキーワードに対して '2' でも自動リンクが働き、望まないリンクが張られるようになってしまった。 DiKicker では階層的キーワードは無くてもあまり困らないので、'/' の前を省略した自動リンクを無効にできるようにした。

JSON 形式データ出力

2007年4月に実装

(DiKicker) はてなブックマーク数表示機能を追加

2007年1月に実装

(DiKicker) はてなブックマークエントリーページへのボタン表示機能を追加

2007年1月に実装

(DiKicker) grep 検索機能を追加

2007年2月に実装。自分としては重宝している。

(DiKicker) キーワード記事の下部への文字列挿入機能

Google AdSense 挿入用。

(DiKicker) サーバの負荷が高くなったら 503 を返して沈静化を待つようにした

2007年4月に実装 load average をチェックして負荷が高い時は、503 を返すようにした。

内部コードの結構な書き換え

ソースコードを結構いじった。 deprecated なメソッドの削除も実施したので、0.41 以前から派生しているソフトウェアは多くの場合修正が必要。

[ 5月30日全て ]

2007年12月18日 (火)

Google Analytics のデータからよく検索されるキーワードを表示するようにした

Google Analytics から1日1回キーワードのレポートを TSV 形式でメールで配信するように設定している。 このデータをもとに「よく検索されるキーワード」を抽出して、nDiki の下の方に表示するようにした。

処理の流れ

  1. メールで配信された TSV 形式データをファイルに保存する。
  2. 検索質問とセッション数の組のデータを抽出する。
  3. 1ワード単位でセッション数を集計する。
  4. 上位のワードについて、nDiki のキーワードリストにあるか照合する。
    1. 完全一致するものがあれば、それを参照キーワードとする。
    2. 大文字小文字一致するものがあれば、それを参照キーワードとする。
    3. ワードを含むキーワードがあれば、その中で文字数の差が少ないものを参照キーワードとする。
    4. ワードで記事を grep 検索してマッチするものがあれば、それを(nDiki 内で検索して見つかる)キーワードとする。
    5. でなければ関連キーワード無しのワードとする。
  5. 各ワードについて、対応するリンクを設定してフッタ埋め込み用の HTML フラグメントを生成しファイルを生成する。
  6. ファイルをサーバにアップロードし、サーバ側でフッタにインクルードする。

1日1回の作業なので、メールからスクリプトにかける部分とアップロードする部分は手動で。

そこそこの処理なので、そこそこの精度なのだけれど傾向は何となくわかる感じだ。

実際にはアクセスログの対象となっているのは nDiki 以外の www.naney.org 内のアクセスも含まれているけれどもまあいいであろう。

キーワードの処理

キーワードの処理は細かいことをいうと結構面倒だったりする。

  • 複合語の処理: 検索ワード側も、nDiki キーワード側も複合語を含むので空白で区切られた語の扱いが大変。特に検索ワード側は語順が正しいとは限らないし、各語が個別の語を表しているのか否かの判断が難しい。
  • 曖昧一致処理: 検索ワード(や nDiki キーワード)が正確な語とは限らないので、曖昧一致させる必要がある。検索エンジン側で曖昧一致させて検索結果に上がっている可能性があるのでその辺りも考慮する必要がある。

などなど。

この辺りは精度を上げようとするといろいろ工夫の余地がって楽しそうではあるな。

[ 12月18日全て ]

2013年3月24日 (日)

今日のさえずり: 商品 CM で先に名前を知るプリキュア

2013年03月24日

  • 08:27 “迷惑な郵便物等(DM、架空請求、いたずら等)を届けてほしくないのですが、どうすればよいでしょうか? - 日本郵便” http://t.co/CVzqr8oRPn
  • 08:29 あれ、アイちゃんていうんだ(商品 CM で先に名前を知るプリキュア界)。
  • 08:36 唐突に生まれた。
  • 09:30 中学生時代からの友人から花見のお誘い。今日は残念ながら来客の先約があって残念ですが、ぜひ今度遊びに行きます。
  • 11:09 う、円が高いうちにと1月6日に Flickr Pro 2年延長したつもりだったんだけれどクレジット決済こないなあと思って確認したら、subscription したことになっているだけだったの……。あれぇ以前はその手続き時点で2年分購入できなかったっけ。
  • 13:12 はやぶさが載っていないのが惜しい。 / “Google以前の検索エンジン | ぷらすぶろぐ” http://t.co/0pEWvhDPQd
  • 17:40 そういえば近谷研OB会しばらくやってないですね(あるいは呼ばれていない)。
  • 18:51 年賀状チェックした。くじ全滅だった。全滅だった。
  • 23:12 1ペインタイプ。 / “UV Outliner — Simple and powerful single-pane outliner for Windowshttp://t.co/rZqgVyf83Q
  • 23:25 腹減ったー。もう歯磨いたしー。
[ 3月24日全て ]

2013年5月15日 (水)

foursquare検索使えないので Google検索する

foursquare検索日本語の処理が変なのか、それとも何かの条件でフィルタしているのかわからないけれど、ベニューが検索にひっかからないことが多い。

なので site:foursquare.com で Google 検索して探すようにしているんだけれど、結構頻繁にやるので Google Chrome検索エンジンに追加しておいた。

  • 検索エンジン名: foursquare(Google)
  • キーワード: 4sq
  • URL: {google:baseURL}search?q=site%3Afoursquare.com+%s&{google:RLZ}{google:acceptedSuggestion}{google:originalQueryForSuggestion}{google:assistedQueryStats}{google:searchFieldtrialParameter}{google:searchClient}{google:sourceId}{google:instantExtendedEnabledParameter}ie={inputEncoding}

これでアドレスバーに「4sq 吉野家 渋谷区」とか入力して検索すれば OK。

[ 5月15日全て ]

2014年9月3日 (水)

nDiki で記事のないキーワードページで 404 Not Found をきちんと返すようにした

nDiki のキーワードページ、(不要になって記事を消しても)そのページの URL では 200 で記事無しページを返していたのだけれど、きちんと 404 Not Found を返すようにした。 これで検索エンジンからみても行儀良い感じになるはず。

消しても 200 を返す処理になっているのが気になって、メモ的にキーワードページを作るの(後で消した時どうなるかを考えて)ためらいがちだったんだけれど、これで気楽になった。

[ 9月3日全て ]

2014年12月11日 (木)

今日のさえずり: 検索エンジンに「チームのURL/messages/%s/」を追加して「slack チャネル名」で開けるようにした

2014年12月11日

[ 12月11日全て ]

2014年12月18日 (木)

Slack に Chrome のアドレスバーから投稿

ぼっち Slack チームをタイムライン型ノートにするの、やってみたら便利で重宝している。

普段から Google ChromeSlack のページを開いておけば PC で作業中にサクっとメモできる。ただ、人に見られるのはちょっとな雑記が並んだ Slack チャネルページを開きっぱなしにしておきたくない時は気を使わなければならないのが嫌。

ということで Slack チャネルページを開かないで投稿できるようにしてみることにした。

Google Chrome はいつも開いているのでアドレスバー(オムニボックス)からさくっと投稿できるようにするのがいいかな。Google Chrome の拡張とか書いたことが無いのでとりあえずパラメータで送られてきたテキストを webhook で Slack に投稿するだけのスクリプトを Web サイトに置いてそれを呼ぶだけにしよう。

サーバ側はとりあえずレガシーだけれど CGI.pm で。Google Chrome 側は「検索エンジンの管理」で「キーワード」を「note」に、URL に「http://www.example.com/note?text=%s」みたいな感じ設定。

これでアドレスバーで

 note メモしたいテキスト

と入力すれば Slack の #notebook チャネルに投稿される。

http://www.naney.org/nDiki/2014/12/18/Google-Chrome.png

 use warnings;
 use strict;
 use utf8;

 use Encode;
 use CGI;
 use LWP::UserAgent;
 use JSON;

 my $slack_channel = '#notebook';
 my $username      = 'myname';
 my $webhook       = 'https://hooks.slack.com/...';

 my $query = CGI->new;
 my $text  = $query->param('text');

 LWP::UserAgent->new->post(
   $webhook,
   {
     payload => JSON::encode_json(
       {
         channel  => $slack_channel,
         username => $username,
         text     => decode_utf8($text)
       }
     )
   }
 ) if defined $text && $text ne '';

 print $query->redirect('https://www.google.co.jp/');
[ 12月18日全て ]

2017年2月5日 (日)

好きなことを好きな分量だけ書けるということ

立場だったり他人の評価だったり検索エンジンだったり広告だったり、その他いろいろなことを意識しないで好きなことを好きな分量だけ、少しだけとか沢山とか書いて置ける場所があるっていいことだと思います。

[ 2月5日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィでマネージャー・PO をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

follow us in feedly

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.058594s / load averages: 0.37, 0.44, 0.40
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker