インデックスファイルと転送 |
作成日:2007-03-04 最終更新日: |
Namazu は WEB の検索文章を加工してインデックスを作る mknmz というプログラムと、 インデックスを利用して語を検索する namazu というプログラムからなる。 mknmz の実行が終わると、mknmzを実行したディレクトリに NMZ.* ファイルが作られる。 Namazu では、これらのファイルをまとめてインデックスと呼ぶ。次はその一覧と簡単な説明である。
検索画面に使われるファイル。言語の拡張子がないのは英語を表す。言語の拡張子.??があるのは次の通り。
なお、上記の NMZ.result.normal と NMZ.result.short 以外に NMZ.result.format を作成できる。
Web ページの特徴を格納したファイル。これらとペアになる拡張子.iを持つファイルは seek 用インデックスである。
また、field. の後に続く特徴名を利用して、フィールドに含まれるキーワードを検索できる。例:
+subject:Linux
表題に Linux が含まれる文書を検索
以下は http://www.namazu.org/doc/nmz.html.ja を参考にした。
私のホームページの Namazu 検索では、 かつて、自分のローカルのコンピュータで Namazu のインデックスファイルを作り、 それから必要な NMZ.* ファイルをリモートコンピュータへ転送していた。 以下はそのときの名残である。
では、どの NMZ.* ファイルを転送すべきだろうか。 インデックスファイルはすべて必要なのだから、転送すべきなのか。 それとも、必要なファイルを決めて、転送すべきか。
最初は必要なファイルを選ぼうとした。 しかし、ほとんど全てが必要であることに気づいた。 いらないものだけを省いて、あとは送ることにした。
$ruby -n -e 'print if $_.length > 70' NMZ.w
実際に転送ファイルを送るスクリプトを示す。言語は Ruby である。
#!/usr/bin/ruby
require 'net/ftp'
Dir.chdir('/homedirectory/localcomputerindexdirectory')
d = Dir.new(".")
ftp = Net::FTP.new(hostname, userid, password)
ftp.chdir('remotecomputerindexdirectory')
ftp.passive = true
d.each {|x|
next if /^\.$/ =~ x
next if /^\.\.$/ =~ x
next if /^NMZ/ !~ x
next if /log$/ =~ x
next if /~$/ =~ x
next if /BAK/ =~ x
next if /tmp/ =~ x
puts ("Got "+ x)
ftp.putbinaryfile(x, x, 1024)
}
ftp.close
ループの部分で next if の行が、 不適当なファイルを選別し、送らないようにしている箇所である。
まりんきょ学問所 > 全文検索システム Namazu > インデックスファイルと転送