刺身の上にたんぽぽ乗せる日記スマートフォン用の表示で見る刺身の上にたんぽぽ乗せる日記プログラミングしたり、自販機の下に落ちてる小銭を集めたりしてますこの広告は、90日以上更新していないブログに表示しています。2chnaviなんだかんだで結構自分でも使ったりするので、真面目に作ることにしてみた。日付でソートされた結果ブックマーク数によりフィルタリング日付・ブックマーク数を利用した重み付け付きの検索結果が出せればいいと思ってる。最後のはどういう式を使えばいいのかわかんないから、そのうち考えるかな、という感じだけど。mysqlというかtritonnのデータを読み込んでindex作るところまでできた。使ったのはapache-solr-3.1.0。MySQLからインポートhttp://ochien.seesaa.net/article/153191074.htmlHTMLタグを削除するhttp://wiki.apache.org/solr/DataImportHandler#HTMLStripTransformerテキストを日本語でindexhttp://d.hatena.ne.jp/knaka20blue/20080813/1218615351日付が近いものをブーストhttp://d.hatena.ne.jp/knaka20blue/20081210/1228898458あと、tritonnで記事タイトル、サイト名、内容でindexして、一括でmatchできるようにしてたけど、これと同じ事やろうと思うときは、fieldを別に一つ定義して、そこにcopyFieldでつなげられる。...tritonn導入しようとした時はすんげー大変だったきがして、今見てみたけど大変そうだった。http://d.hatena.ne.jp/kudzu/20100815/1281848093http://d.hatena.ne.jp/kudzu/20100815/1281887444Luceneって面倒くさそう、って思ってたけど、solrのことを最初から知ってればこんなに苦労しなかったのになぁ...。2011-05-02T00:00:00.000Z]でできる。ここでTOを小文字にしてエラーがでて困った。1000000000]みたいなのでできる。query万歳!日付はpdateとtdateがあって、dateを指定するとtdateになるけど、2chnaviみたいにバックログを年・月で検索することがあるのであれば、trieを使ってるtdateほうが多分速い。intも同様にtintとpintがある。今のところは検索とバックログだけ移行する予定だから、こっちはtintにする必要はないんだけど、速度によっては考えたほうがいいかもしれないので、とりあえずtintにしてみた。proのメモリがサーバの8倍くらいあるので、実際の環境でどれだけ動くのかは割と不安。あと、今気づいたけど、板・カテゴリの部分が、SQLだと相当効率が悪いので、ここはindexしたほうがいい気がしてきた。板とカテゴリがm:nの変態な関係なので、記事一つに対して、カテゴリ一覧を取得するためにもう一度クエリ投げ直すのが時間がかかりすぎる。どちらかというとクライアント側から投げるクエリでうまく対処するほうが正しいっぽい。いうかSQLで普通に解決できる方法を思いついた。追加作業メモクライアント側はhttp://code.google.com/p/solr-php-client/を使う。http://code.google.com/p/solr-php-client/wiki/ExampleUsageのコードを試してみたけど、割とすんなり動いてびびる。一応つまづいたところは一箇所だけあって、value側にmultivalueがあったので、それをhtmlspecialcharしようとして、こけてたので、var_dumpに変えるだけで大丈夫だった。追記UbuntuにJavaをインストールhttp://d.hatena.ne.jp/Yoshiori/20100505/1273040380別にどれでもいいんだろうけど。あと、なんかmacからコピーしたせいか._*.jarが大量で生成されてて、読み込み時にこけまくってた。rmでまとめて消した。importで差分だけ読み込む。mysqlのテーブルにtimestamp型のカラムを作成するhttp://blog.s21g.com/articles/1277テーブルが巨大だから、永遠と時間がかかる。あと、このtimestampをベースに差分をとるから、index作ったほうがいい。これまた時間かかりそう。solr側では、deltaQueryで差分を取得するためのクエリーを指定する。http://d.hatena.ne.jp/bowez/20100405#p2上で新たに作成したカラムのタイムスタンプがsolr側の前回のindex更新タイムスタンプより新しければ読み込む、という感じでいいんだと思う。'${dataimporter.last_index_time}'まだ試してないけど。現在HDDがいっぱいなので、色々開放中。クリックスルーのデータがやたらでかいので、それを圧縮中。solr側から必要なカラムだけしか取らないにはfl=パラメータを使う。http://ja.w3support.net/index.php?db=so&id=264907PHP側からはこれでいいのかね?。なんか普通にインターフェース用意してくれてもいい気がするけど。desc"とか書けばok。variable.これは/etc/my.cnfとか/etc/mysql/my.cnfとかのmysqldのセクションにmax_allowed_packetの行を追加して、必要なだけ大きくすればいい。spacehttp://wiki.apache.org/solr/DataImportHandlerFaq#I.27m_using_DataImportHandler_with_a_MySQL_database._My_table_is_huge_and_DataImportHandler_is_going_out_of_memory._Why_does_DataImportHandler_bring_everything_to_memory.3FbatchSizeを-1にすればok。今年のデータは読み込み終了。incrementalでデータ読み込もうと思っていたけど、冷静に考えるとアップデートされるのはせいぜい一週間分だから、一週間分だけ調べればいいのかね?あと、差分のインポートはdeltaQueryだけど、ただインクリメンタルにやりたいだけなら、clean=falseをパラメータに渡せば普通にできるっぽい。tableしていたなぁ、ということに気づいた。aaa;という風にselectしている場合、*に対応するカラムが全てキャッシュされているのかわからないけど、*の代わりに全部カラムを書き出さないと正しく動かなかった。DeltaImportQueryの例が混乱を招くんだけど、http://wiki.apache.org/solr/DataImportHandler#Using_delta-import_command別にdeltaQueryでidを取得して、deltaImportQueryでそのidをベースにデータを引っ張る必要はなさそう。'${dataimporter.last_index_time}'"と書くだけでも問題ないはず。書いたら、多分アップデートする件数^2の処理が発生している感じがする。delta.idを使って一行一行インポートする手法の場合、クエリ数が2nになったけど、比較的高速に終わる*1。documentsが始まってからが長くて、8分くらいかかった。optimize=falseをつけないとindexの最適化が発生して、すごく時間がかかっているらしい。*])をクエリに追加するだけでok。cmecab-javaの1.7ファイルとかはここ。Showhttp://abc.go.com/primetime/isurvivedajapanesegameshow/inde...2006-09-08VNCより高速なFreeNXhttp://gigazine.net/index.php?/news/comments/20060908_freen...2006-07-19hatena情報offにしたようやく快適だ。エントリ情報のテーブルと、そのエントリに対...2006-06-19最近の記事の人気度ランキングrssも配信し始めてみた。正しいかよくわかんないけど。virtualenv設定メモサーバがまた起動しなくなってた月別アーカイブはてなブログをはじめよう!kudzuさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。