これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなど、複数の無料オンライン ワークステーションのいずれかを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド SWISH-FAQ です。
プログラム:
NAME
SWISH-FAQ - Swish-e FAQ。 よくある質問への回答
概要
よくある質問と回答済みの質問のリスト。 質問する前にこのドキュメントを確認してください
Swish-e ディスカッション リストに質問があります。
全般 質問
この試験は is スウィッシュ?
Swish-eは S単純な Web I索引付け Sのためのシステム H人間 - E強化された。 それを使用すると、すばやく、
ファイルまたはリモート Web サイトのディレクトリに簡単にインデックスを付け、生成されたインデックスを検索して、
単語やフレーズ。
そう、 is スウィッシュイー a サーチ エンジン?
はい、そうです。 Swish-e のおそらく最も一般的な用途は、Web 用の検索エンジンを提供することです。
サイト。 Swish-e ディストリビューションには CGI スクリプトが含まれており、これを使用して
サーチ エンジン あなたのウェブサイトのために。 CGI スクリプトは、 例 のディレクトリ
配布パッケージ。 を参照してください README スクリプトに関する情報のファイル。
ただし、Swish-e は、電子メール メッセージ、データなど、あらゆる種類のデータのインデックス作成にも使用できます。
リレーショナル データベース管理システム、XML ドキュメント、または次のようなドキュメントに保存されます。
Word および PDF ドキュメント、またはこれらのソースの任意の組み合わせを同時に。 検索
フィールドまたは メタネーム ドキュメント内、またはドキュメント内の領域に限定
HTML ドキュメント (例: 本文、タイトル)。 CGI アプリケーション以外のプログラムは Swish-e を使用できます。
同様に。
すべき I アップグレード if アイム 既に ランニング a 前 バージョン of スウィッシュ?
バージョンでは多数のバグ修正、機能追加、およびロジック修正が行われました
2.2. さらに、インデックス作成速度が大幅に向上しました (インデックス作成時間のレポート
5 時間から XNUMX 分に変更)、インデックス作成および検索パーサーの主要部分
書き直されました。 より優れたデバッグ オプション、強化された出力形式などがあります。
ドキュメントのメタデータ (最終更新日、ドキュメントの概要など)、インデックス作成のオプション
いくつかの変更点を挙げるとすれば、外部データ ソース、およびスパイダーの高速化です。 (変更を参照してください
詳細についてはファイル。
バージョン 2.2 には多大な労力が費やされたため、以前のバージョンのサポートは
おそらく限られています。
です。 そこ バイナリ ディストリビューション 利用できます の スウィッシュイー on プラットフォーム ふー?
フー? はい、利用可能なバイナリ ディストリビューションがいくつかあります。 Swish-eウェブをご覧ください
リストのサイト http://swish-e.org/.
一般に、可能であればソースから Swish-e をビルドすることをお勧めします。
Do I 必要 〜へ インデックスの再作成 my ウェブサイト 各 時間 I アップグレード 〜へ a NEW スウィッシュイー バージョン?
厳密には必要ない場合もありますが、本当に必要かどうかはわかりません
インデックスが変更された場合は、インデックスを再作成することをお勧めします。
何 利点 of libxml2 ライブラリ の 解析する HTML?
Swish-e は、HTML および XML ドキュメントを操作するためのライブラリである libxml2 とリンクされている場合があります。
Swish-e は、HTML および XML ドキュメントの解析に libxml2 を使用できます。
libxml2 パーサーは、Swish-e の組み込み HTML パーサーよりも優れたパーサーです。 それはより多くを提供します
機能を備えており、Web ページからテキストを抽出する際にはるかに優れた仕事をします。 の
さらに、「ParserWarningLevel」構成設定を使用して構造を見つけることができます
ドキュメント内のエラーがドキュメントを引き起こす可能性があります (Swish-e の HTML パーサーを使用すると発生する可能性があります)。
誤って索引付けされる。
Libxml2 は必須ではありませんが、HTML ドキュメントの解析には強くお勧めします。 これは
内部 Expat よりも多くの機能を提供するため、XML の解析にも推奨されます。
xml.c パーサー。
内部 HTML パーサーのサポートは限定的であり、多くのバグがあります。 ために
たとえば、HTML エンティティは常に正しく変換されるとは限らず、プロパティには
エンティティが変換されました。 無効な HTML が解析されると、内部パーサーが混乱する傾向があります。
libxml2 パーサーが頻繁に混乱することはありません。 構造がよりよく検出されます
libxml2 パーサーを使用します。
Perl モジュール (Swish-e ライブラリへの C インターフェイス) を使用している場合は、
Swish-e の 2 つのバージョンをビルドします。XNUMX つはバイナリでリンクされた libxmlXNUMX ライブラリを使用し、もう XNUMX つは
libxml2 コードなしでライブラリに対して Perl モジュールをビルドします。 これは
ライブラリ内のスペースを節約します。 うまくいけば、ライブラリはいつかすぐに分割されます
コードの索引付けと検索 (ボランティア歓迎)。
か スウィッシュイー include a CGI インターフェース?
はい。 すこし。
swish.cgi と search.cgi の XNUMX つのサンプル CGI スクリプトが含まれています。 どちらも次の場所にインストールされています。
$prefix/lib/swish-e.
どちらも、セットアップと使用に少し作業が必要です。 Swish.cgi は、おそらくほとんどの人が使用するものです。
より多くの機能が含まれているため、使用したいと考えています。 Search.cgi は、これから始めたい人向けです。
小さなスクリプトを作成し、ニーズに合わせてカスタマイズします。
swish.cgi の使用例は、INSTALL の man ページに記載されています。
ドキュメンテーション。 よくあることですが、最初に読んでおくと使いやすいです。
のドキュメントで詳しく説明されています)。
Swish-e で使用するインターネット上の CGI スクリプトには注意してください。 一部は
安全ではありません。
含まれている CGI スクリプトの例は、セキュリティを考慮して設計されています。 とにかく、あなたは
地元の Perl 専門家にレビューしてもらうことをお勧めします (および使用する他のすべての CGI スクリプト)。
生産に入れる前に。 これは、従うべき良いポリシーです。
認定条件 安全に is スウィッシュ?
Swish-e の使用によるセキュリティ上の問題は確認されていません。 細心の注意が払われています
Swish-e をプログラミングする際のバッファ オーバーランなどの一般的なセキュリティ問題について説明します。
Swish-e で最も可能性の高いセキュリティの問題は、不適切に作成された CGI を介して実行された場合です。
インターフェース。 これは Perl で書かれた CGI スクリプトに限定されるものではありません。
C、Java、PHP、または Python で安全でない CGI スクリプトを作成します。 良い情報源は
Perl ディストリビューションに含まれています。 詳細については、ローカルプロンプトで「perldoc perlsec」と入力してください
情報。 もう XNUMX つの必読ドキュメントは次の場所にあります。
"http://www.w3.org/Security/faq/wwwsf4.html".
たくさんあることに注意してください 無料です。 まだ安全ではなく、よく書かれていない CGI スクリプトが利用可能です --
Swish-e で使用するために設計されたものもあります。 使用する CGI スクリプトを注意深く確認してください。
サーバーがハッキングされた場合、無料はそれほど良い価格ではありません...
すべき I ラン スウィッシュイー as スーパーユーザ (根)?
いいえ、決して。
この試験は ファイル ありません スウィッシュイー 書きます?
もちろん、Swish はインデックス ファイルを書き込みます。 これは「IndexFile」で指定されます
構成ディレクティブまたは「-f」コマンド ライン スイッチによって。
インデックス ファイルは実際にはファイルの集まりですが、すべてファイル名で始まります
「IndexFile」ディレクティブまたは「-f」コマンド ライン スイッチで指定します。
たとえば、ファイルの末尾が .prop ドキュメントのプロパティが含まれています。
インデックスファイルを作成するとき、Swish-e は拡張子を追加します .temp インデックスファイル名に。
インデックス作成が完了すると、Swish-e で名前が変更されます .temp によって指定されたインデックス ファイルへのファイル
「IndexFile」または「-f」。 これは、既存のインデックスが変更されるまで変更されないようにするためです。
索引付けを完了します。
Swish-e は、インデックス作成中に一時ファイルを書き込むこともあります (例: "-s http"、"-s
prog" フィルターを使用)、マージ時、および "-e" を使用する場合)。一時ファイルは次のように作成されます。
ムクテンプ(3) 関数 (UNIX ライクなオペレーティング システムでは 0600 パーミッションで)。
一時ファイルは、環境変数で指定されたディレクトリに作成されます
「TMPDIR」、「TMP」の順。 それらが設定されていない場合、swish は設定を使用します
構成設定 TmpDir。 それ以外の場合、一時ファイルは
カレントディレクトリ。
できる I index PDF マイクロソフトワード 書類?
はい、使用できます フィルター インデックス作成中にドキュメントを変換するか、プログラムを使用できます
すでに変換されたドキュメントを Swish-e に「フィード」します。 以下の「索引付け」を参照してください。
できる I index ドキュメント on a ウェブ サーバ?
はい、Swish-e は、Web サーバー上のドキュメントを (スパイダー) インデックス化する XNUMX つの方法を提供します。 見る
以下「スパイダリング」。
Swish-e は、ファイル システムまたはリモート Web サーバーからドキュメントを取得できます。 できる
ドキュメントを戻すプログラムも実行します。 このプログラムは取得できます
データベースからの文書、圧縮文書ファイルのフィルタリング、PDF ファイルの変換、抽出
メール アーカイブ、またはスパイダー リモート Web サイトからのデータ。
できる I 実装する キーワード in my 書類?
はい、Swish-e は単語を メタネーム インデックス作成中に、
検索中にこれらの MetaName を検索します。
HTML ファイルでは、キーワードを HTML META タグまたは XML ブロックに入れることができます。
META タグは、ソース ドキュメントで XNUMX つの形式を持つことができます。
XML 形式 (libxml2 を使用する場合は HTML ドキュメントでも使用できます):
一部のコンテンツ
次に、ドキュメントにメタ名が存在することを Swish-e に通知するには、
構成ファイルの行:
メタネーム DC.subject メタ 1 メタ 2
検索時に、一部またはすべての検索用語をその MetaName に制限できるようになりました。 例えば、
リンゴという単語を含み、果物または料理のいずれかが含まれるドキュメントを探す
DC.subject メタ タグ。
この試験は ドキュメント プロパティ?
ドキュメント プロパティは通常、ドキュメントを説明するデータです。 例えば、
プロパティには、ドキュメントのパス名、最終更新日、タイトル、またはドキュメントの
サイズ。 Swish-e はドキュメントのプロパティをインデックス ファイルに保存し、レポートすることができます。
検索結果に戻ります。
Swish-e は、並べ替えにもプロパティを使用します。 結果を XNUMX つまたは複数で並べ替えることができます
昇順または降順のプロパティ。
ドキュメント内でプロパティを定義することもできます。 HTML および XML ファイルはタグを指定できます
(前の質問を参照) プロパティとして。 の 中身 これらのタグのうち、返される可能性があるのは
検索結果付き。 これらのユーザー定義のプロパティは、並べ替え検索にも使用できます
結果。
たとえば、ドキュメントに次のものが含まれているとします。
「作成者」はプロパティとして定義されます (SWISH-CONFIG の「PropertyNames」を参照)。
そのドキュメントの結果とともに「会計部門」を返します。
swish-e -w foo -p 作成者
または並べ替えの場合:
swish-e -w foo -s 作成者
何 違い の間に メタネーム プロパティ名?
MetaNames を使用すると、ドキュメント内でキーワードを検索できます。 つまり、MetaNames を使用して、
ドキュメントの一部のみに検索を制限します。
一方、PropertyNames は、結果とともに返すことができるテキストを定義します。
並べ替えに使用されます。
どちらも使用します メタ タグ ドキュメントにある (上記の XNUMX つの質問に示されているように) 定義する
プロパティまたはメタ名として使用するテキスト。
タグを次のように定義できます。 両言語で プロパティとメタ名。 例えば:
ドキュメントに配置し、次の構成設定を使用します。
PropertyNames 作成者
メタネーム作成者
会計によって作成されたドキュメントに検索を制限できます。
swish-e -w 'foo and Creator=(accounting)'
これにより、「foo」という単語を含むすべてのドキュメントが検索され、作成者のメタ タグも含まれます。
「会計」という言葉が入っています。 これはメタネームを使用しています。
また、次のように言うこともできます。
swish-e -w foo -p 作成者
「foo」という単語を含むすべてのドキュメントを返しますが、結果には
"creator" メタ タグの内容と結果。 これはプロパティを使用しています。
プロパティとメタ名も同時に使用できます。
swish-e -w クリエーター=(会計またはマーケティング) -p クリエーター -s クリエーター
それは「クリエイター」でのみ検索します メタ 名 「会計」という言葉のいずれかまたは
「マーケティング」、「クリエイター」のコンテンツの内容をプリントアウト 財産、および並べ替え
「作り手」による結果 財産 名.
(SWISH-RUN の「-x」出力形式スイッチも参照してください。)
できる スウィッシュイー index マルチバイト 文字?
いいえ。これを変更するには多くの作業が必要です。 しかし、Swish-e は XNUMX ビット文字で動作します。
非常に多くの文字セットを使用できます。 ANSI-C を呼び出すことに注意してください。 より低い() function
これは現在のロケール設定に依存します。 見る ローカル(7)詳細については。
インデキシング
認定条件 do I パス スウィッシュイー a リスト of ファイル 〜へ インデックス?
現在、リストを含むファイルを含める構成ディレクティブはありません。
索引付けするファイルの数。 ただし、別の構成ファイルをインクルードするディレクティブがあります。
IncludeConfigFile /path/to/other/config
そして、「/path/to/other/config」では次のように言えます。
IndexDir file1 file2 file3 file4 file5 ...
IndexDir ファイル 20 ファイル 21 ファイル 22
コマンド ラインで複数の構成ファイルを指定することもできます。
./swish-e -c config_one config_two config_three
もう XNUMX つのオプションは、インデックスを作成するファイルのシンボリック リンクを含むディレクトリを作成することです。
そのディレクトリだけをインデックス化します。
認定条件 ありません スウィッシュイー 知っています which パーサー 〜へ つかいます?
Swish は、HTML、XML、およびテキスト ドキュメントを解析できます。 パーサーは、ファイルを関連付けて設定します
「IndexContents」ディレクティブによるパーサーによる拡張。 デフォルトのパーサーを設定できます
「DefaultContents」ディレクティブを使用します。 ドキュメントにパーサーが割り当てられていない場合、
デフォルトは HTML パーサー (libxml2 でビルドされている場合は HTML2) です。
フィルターまたは外部プログラムを使用して、ドキュメントを HTML、XML、またはテキストに変換できます。
できる I インデックスの再作成 サーチ at 同じ 時間?
はい。 バージョン 2.2 以降、Swish-e は一時ファイルにインデックスを付けてから、名前を変更します。
インデックス作成が完了したときのファイル。 ほとんどのシステムでは、名前の変更はアトミックです。 しかし、Swish-e以来
また、インデックス作成中に複数のファイルが生成され、非常に短い期間が発生します。
インデックスが同期されていないときに、さまざまなファイルの名前を変更するまでの時間。
の設定 src/config.h 一時ファイルに関連するいくつかのオプションとその使用を制御する
インデックス作成中。
できる I index フレーズ?
フレーズは自動的に索引付けされます。 フレーズを検索するには、二重引用符を配置するだけです
フレーズの周り。
具体的な例を挙げますと、以下の通りです。
swish-e -w '無料の「高速検索エンジン」'
認定条件 できる I 防ぐ フレーズ from マッチング 越えて 文章?
BumpPositionCounterCharacters 構成ディレクティブを使用します。
スウィッシュイー ない インデキシング a 一定 単語 or フレーズ。
Swish-e が何と見なすかを制御する設定パラメータがいくつかあります。
「単語」であり、インデックス作成の問題を特定するのに役立つデバッグ機能があります。
構成ファイル ディレクティブ (SWISH-CONFIG) "WordCharacters"、"BeginCharacters"、
「EndCharacters」、「IgnoreFirstChar」、および「IgnoreLastChar」は、Swish-
e は「単語」を定義するために使用します。 詳細については、SWISH-CONFIG および SWISH-RUN を参照してください。
Swish-e は、多くの設定でコンパイル時のデフォルトも使用します。 これらは次の場所にあります。
src/config.h ファイルにソフトウェアを指定する必要があります。
コマンド ライン引数「-k」、「-v」、および「-T」の使用は、これらをデバッグするときに役立ちます。
問題。 インデックス作成中に「-T INDEXED_WORDS」を使用すると、各単語がそのまま表示されます
索引付けされています。 この機能を使用する場合は、多くのファイルが生成される可能性があるため、XNUMX つのファイルを指定する必要があります。
出力の。
./swish-e -c my.conf -i 問題のファイル -T INDEXED_WORDS
索引付けされている単語または索引付けされていない単語を含む単一のファイルを索引付けすることもできます。
-T を使用して、インデックスに関するデバッグ情報を出力します。 役に立つ
コマンドは次のようになります。
./swish-e -f インデックス.swish-e -T INDEX_FULL
Swish-e が単語をどのように解析し、インデックスを作成しているかを確認したら、
上記の構成設定を使用して、インデックスを作成する単語を制御します。
別の便利なコマンドは次のとおりです。
./swish-e -c my.conf -i question.file -T PARSED_WORDS INDEXED_WORDS
これにより、ドキュメントから解析された空白の単語 (PARSED_WORDS) と、それらがどのように処理されたかが表示されます。
単語は、索引付けのために個別の単語に分割されます (INDEXED_WORDS)。
認定条件 do I 続ける スウィッシュイー from インデキシング 数字?
Swish-e は、前述のように、「WordCharacters」設定で定義された単語にインデックスを付けます。 それで
インデックス番号を回避するには、「WordCharacters」設定から数字を削除するだけです。
にもいくつかの設定があります src/config.h どの「単語」が索引付けされるかを制御します。 あなた
すべて数字、母音、または子音である単語を索引付けしないように swish を構成できます。
数字、母音、または子音の連続した数を超えるもの。 の
通常、これらの設定を変更する必要はありません。
また、「IgnoreNumberChars」と呼ばれる実験的な機能があります。
数値を表す一連の文字を定義します。 単語が構成されている場合 の それらの
文字は索引付けされません。
スウィッシュイー クラッシュ 火傷 on a 一定 ファイルにソフトウェアを指定する必要があります。 この試験は できる I 行う?
これは起こるべきではありません。 その場合は、詳細を Swish-e ディスカッション リストに投稿してください。
開発者が再現できるようにします。
それまでの間、「FileRules」ディレクティブを使用して特定のファイル名を除外できます。
またはパス名、またはそのタイトル。 特定のタイプのインデックス作成に深刻な問題がある場合
ファイルには、有効なテキストが含まれていない可能性があります (たとえば、バイナリ ファイルである可能性があります)。 あなた
NoContents を使用して、そのタイプのファイルを除外できます。
ドキュメント内にヌル文字が埋め込まれている場合、Swish-e は警告を発行します。 これ
warning は、バイナリ データのインデックスを作成しようとしていることを示します。 もしあなたが必要ならば
インデックス バイナリ ファイルは、テキストを抽出するプログラムを見つけようとします (例: ストリング(1)
キャットドック(1) pdftotext(1))。
認定条件 〜へ I 防ぐ インデキシング of 一部 書類?
ファイル システムを使用してファイルのインデックスを作成する場合、「FileRules」ディレクティブを使用できます。
「FileRules title」以外の「FileRules」は、ファイルシステム(「-S fs」)でのみ動作します。
「-S prog」または「-S http」ではなく、インデックス作成方法。
自分が管理しているサイトをスパイダーしている場合は、 robots.txtの ドキュメント内のファイル
根。 これは、検索エンジンからファイルを除外する標準的な方法であり、完全に
Swish-e でサポートされています。 見る http://www.robotstxt.org/
含まれているウェブサイトをスパイダーする場合 Spider.pl プログラムに必要なテストを追加します
スパイダーの設定ファイル。 タイプの「prog-bin」ディレクトリに
詳細を確認するか、Swish-e Web サイトのスパイダーのドキュメントを参照してください。 のセクションを探します
コールバック関数。
HTML の解析に libxml2 ライブラリを使用している場合 (おそらくそうです)、以下も使用できます。
ドキュメント内のメタ ロボットの除外:
obeyRobotsNoIndex ディレクティブを参照してください。
認定条件 do I 防ぐ インデキシング 部品 of a 資料?
Swish-e が一般的なヘッダー、フッター、またはナビゲーション バーのインデックスを作成しないようにするには、かつ、
HTML の解析に libxml2 を使用すると、必要なテキストの周りに偽の HTML タグを使用できます。
「IgnoreMetaTags」ディレクティブを無視して使用します。 これにより、次の場合にエラー メッセージが生成されます。
「ParserWarningLevel」は無効な HTML として設定されます。
「IgnoreMetaTags」は、XML ドキュメント (および libxml2 を
ただし、テキスト (TXT) パーサーによって解析されたドキュメントは対象外です。
libxml2 パーサー (HTML2 および XML2) を使用している場合は、次を使用できます。
インデックス作成を防ぐためのドキュメント内のコメント:
および/またはこれらも使用できます。
認定条件 do I 修正する path or URL of 索引付けされた ドキュメント。
「ReplaceRules」構成ディレクティブを使用して、パス名と URL を書き換えます。 あなたがいる場合
「-S prog」入力メソッドを使用すると、パスを任意の文字列に設定できます。
認定条件 できる I index データ from a データベース?
索引付けの「prog」文書ソース方式を使用します。 を抽出するプログラムを作成します。
データベースからデータを取得し、XML、HTML、またはテキストとしてフォーマットします。 の例を参照してください。
「prog-bin」ディレクトリ、そして次の質問です。
認定条件 do I index my PDFファイル、 ワード、 圧縮された 書類?
Swish-e は、デフォルトで内部的に HTML、XML、および TXT (テキスト) ファイルのみを解析できますが、
使用 フィルター MS Word ドキュメント、PDF、または
Swish-e が理解できるファイル タイプの XNUMX つに gzip されたファイル。
SWISH-CONFIG と例を参照してください。 フィルター フィルタービン 詳細のディレクトリ
情報を表示します。
Swish-e のフィルタリング オプションについては、次の質問を参照してください。
認定条件 do I filter 書類?
Swish-e の「フィルター」という用語は、XNUMX つのタイプのドキュメントの変換を意味します (
swish-e は直接インデックス付けできません) Swish-e がインデックス付けできる型、つまり HTML、plain に
テキスト、または XML。 さらに混乱を招くのは、これを実現する方法がいくつかあることです。
Swish-e。 ここで少し背景を説明します。
FileFilter ディレクティブは、最初に swish に追加されました。 この機能を使用すると、
特定のファイル拡張子に一致するドキュメントに対して実行するプログラム。 たとえば、フィルタリングするには
PDF ファイル (.pdf で終わるファイル) では、次の構成設定を指定できます。
FileFilter .pdf pdftotext "'%p' -"
これは、プログラム「pdftotext」を実行して、ファイルのパス名 (%p) と
ダッシュ (標準出力に出力するように pdftotext に指示します)。 次に、各 .pdf ファイルに対して Swish-e が実行されます
このプログラムを実行し、フィルター プログラムからの出力からフィルター処理されたドキュメントを読み取ります。
これには、設定が簡単であるという利点があります。設定ファイルの XNUMX 行ですべてが完了します。
フィルタを Swish-e に追加するために必要です。 しかし、それには多くの問題もあります。 ために
たとえば、Perl スクリプトを使用してフィルタリングを行う場合、非常に遅くなる可能性があります。
処理されたドキュメントごとにフィルター スクリプトを実行 (およびコンパイル) する必要があります。 これは
-S http メソッドは Perl スクリプトも使用するため、-S http メソッドを使用すると悪化します。
これは、取得された URL ごとに実行されます。 また、入力の -S prog メソッドを使用する場合 (読み取り
プログラムからの入力) FileFilter を使用するということは、Swish-e が最初にファイルを読み込む必要があることを意味します。
外部プログラムを実行する前に、ファイルを一時ファイルに書き出します。
フィルタ。
-S prog を使用すると、プログラムでドキュメントをフィルタリングする方がはるかに理にかなっています。
swish-e でファイルをメモリに読み込み、
一時ファイルを作成してから、外部プログラムを実行します。
Swish-e ディストリビューションには、いくつかの -S prog プログラムの例が含まれています。 Spider.pl
-S http メソッドよりも多くのオプションを提供する、かなりフル機能の Web スパイダーです。
また、-S http を実行するよりもはるかに高速です。
スパイダーには perl 構成ファイルがあります。つまり、プログラミング ロジックを正しく追加できます。
スパイダー プログラムを編集せずに設定ファイルに追加します。 XNUMXビットのロジックは
スパイダーの構成ファイルで提供されるのは、次のことを可能にする「コールバック」機能です。
コンテンツをフィルタリングします。 つまり、スパイダーが取得した Web ドキュメントを
スパイダーは、スパイダーの構成で単純なサブルーチンを呼び出すことができます。
ドキュメントとそのコンテンツ タイプを渡すファイル。 サブルーチンは次に、
コンテンツ タイプを調べて、ドキュメントをフィルタリングする必要があるかどうかを決定します。
たとえば、「application/msword」タイプのドキュメントを処理する場合、コールバック
サブルーチンは doc2txt.pm perl モジュールを呼び出し、タイプが「appliation/pdf」のドキュメントを呼び出します。
pdf2html.pm モジュールを使用できます。 の prog-bin/SwishSpiderConfig.pl ファイルはこれを示しています
使用法。
このシステムはかなりうまく機能しますが、セットアップにはより多くの作業が必要であることも意味します。
フィルター。 まず、特定のコンテンツ タイプを明示的に確認してから、
次に、各モジュールをどのように呼び出す必要があるかを知る必要があります。
それぞれが変更された可能性のあるコンテンツを返す方法。
SWISH::Filter が入ってきます。
物事を簡単にするために、SWISH::Filter Perl モジュールが作成されました。 このモジュールの考え方
すべての種類のドキュメントをフィルタリングするために使用される XNUMX つのインターフェイスがあることです。 だから代わりに
コンテンツタイプとドキュメントを渡すだけで、特定のタイプのコンテンツをチェックします
SWISH::Filter モジュールで、新しいコンテンツ タイプとドキュメントが返された場合はそれを返します。
濾過された。 実際の作業を行うフィルターは、標準インターフェイスを使用して設計されており、
フィルター「プラグイン」のように機能します。 新しいフィルタを追加すると、フィルタを
ディレクトリにあり、スパイダーの設定ファイルを変更する必要はありません。 フィルターをダウンロードする
Postscript の場合、次にインデックス作成を実行すると、Postscript ファイルのインデックスが作成されます。
フィルターは標準化されているため、ドキュメントをフィルターする必要がある場合にうまくいけば
特定のタイプのフィルターは、すぐに使用できます。
ここで、perl モジュールがドキュメントの実際の変換を行う場合と行わない場合があることに注意してください。
たとえば、PDF 変換モジュールは pdfinfo および pdftotext プログラムを呼び出します。 それらの
プログラム (Xpfd パッケージの一部) は、フィルターとは別にインストールする必要があります。
SwishSpiderConfig.pl サンプル スパイダー構成ファイルは、
SWISH::フィルタリングのためのフィルターモジュール。 このファイルは次の場所にインストールされます。
$prefix/share/doc/swish-e/examples/prog-bin、ここで $prefix は通常 / usr / local unix で
タイプのマシン。
フィルタリングの SWISH::Filter メソッドは、 -S http メソッドと一緒に使用することもできます。
索引付け。 デフォルトでは、 スウィッシュスパイダー プログラム (取得する Perl ヘルパー スクリプト
Web からのドキュメント) は SWISH::Filter モジュールを使用しようとします。
Perls ライブラリ パス。 このパスは Spider.pl には自動的に設定されますが、swishspider には設定されません
(すでに遅いメソッドを遅くするため、 Spider.pl が推奨されます
-S http メソッド)。
したがって、このシステムを -S http で使用するために必要なのは @INC 配列を設定することだけです
フィルター ディレクトリを指すようにします。
たとえば、swish-e ディストリビューションが展開された場合、 ~/swish-e:
PERL5LIB=~/swish-e/フィルター swish-e -c conf -S http
-S http メソッドが SWISH::Filter モジュールを利用できるようにします。
SWISH::Filter モジュールを使用していない場合は、編集することをお勧めします。
スウィッシュスパイダー この設定を使用してプログラムし、SWISH::Filter モジュールの使用を無効にします。
定数 USE_FILTERS => 0 を使用します。 # SWISH::フィルターを無効にする
これにより、プログラムが SWISH::Filter モジュールを使用しようとするのを防ぎます。
取得されるテキスト URL。 もちろん、インデックス作成速度に関心がある場合は、
-S http の代わりに Spider.pl で -S prog メソッドを使用している。
スパイダーを使用していないが、それでも SWISH::Filter モジュールを使用したい場合は、
フィルタリングには、DirTree.pl プログラム ($prefix/lib/swish-e 内) を使用できます。 これは単純な
ファイル システムを走査し、フィルタリングに SWISH::Filter を使用するプログラム。
フィルタ プログラムを実行する方法の XNUMX つの例を次に示します。XNUMX つは Swish-e の「FileFilter」を使用します。
ディレクティブ、「prog」入力メソッド プログラムを使用する別のディレクティブ。 を参照してください SwishSpiderConfig.pl file
SWISH::Filter モジュールの使用例。
これらのフィルターは単にプログラムを使用します」/ bin / cat" をフィルターとして使用し、.html ファイルのみをインデックスに登録します。
まず、「FileFilter」メソッドを使用して、構成ファイル全体 (swish.conf) を以下に示します。
インデックスディレクトリ。
インデックスのみ.html
ファイルフィルター .html "/ bin / cat" "'%p'"
コマンドでインデックスを作成します
swish-e -c swish.conf -v 1
これで、"-S prog" ドキュメント ソース入力メソッドと Perl を使用しても同じことが言えます。
catfilter.pl と呼ばれるプログラム。 を使用するよりもはるかに手間がかかることがわかります
上記の「FileFilter」メソッドですが、追加の処理を行う場所を提供します。 この中で
たとえば、「prog」メソッドはわずかに高速です。 しかし、Perl スクリプトが必要な場合は、
FileFilter として実行すると、「prog」が大幅に高速になります。
#!/usr/local/bin/perl -w
厳格な使用;
File::Find を使用します。 # ディレクトリ ツリーの再帰用
$/ = undef;
探す(
{ 欲しかった => \&欲しかった, no_chdir => 1, },
'.',
);
サブ募集中{
-d の場合に戻ります。
/\.html$/; でない限り戻ります。
私の $mtime = (統計)[9];
my $child = open( FH, '-⎪' );
die "$ の fork に失敗しました!" 定義されていない限り、$child;
実行 '/ bin / cat', $_ でなければ $child;
私の $content = ;
私の $size = 長さ $content;
印刷 <
コンテンツの長さ: $size
最終 M 時間: $mtime
パス名: $_
EOF
印刷する;
}
そして、次のコマンドでインデックスを作成します:
swish-e -S prog -i ./catfilter.pl -v 1
この例は、「-⎪」が開いているため、おそらく Windows では機能しません。 シンプルなパイプ
open も同様に機能する場合があります。
つまり、以下を置き換えます。
my $child = open( FH, '-⎪' );
die "$ の fork に失敗しました!" 定義されていない限り、$child;
実行 '/ bin / cat', $_ でなければ $child;
これとともに:
open( FH, "/ bin / cat $_ ⎪" ) または死ぬ $!;
メタ文字が含まれていない場合、Perl はシェルを介してコマンドを実行しないようにします。
オープンに渡しました。 詳細については、「perldoc -f open」を参照してください。
ねえ、 焙煎が極度に未発達や過発達のコーヒーにて、クロロゲン酸の味わいへの影響は強くなり、金属を思わせる味わいと乾いたマウスフィールを感じさせます。 I ただ 欲しいです 〜へ 知っています の 〜へ index PDF ドキュメント!
の例を参照してください。 confに ディレクトリとその中のコメント SwishSpiderConfig.pl ファイルにソフトウェアを指定する必要があります。
フィルタリングの詳細については、前の質問を参照してください。 あなたが使用することを決定した方法は、
どれだけ速くインデックスを作成したいか、および Perl モジュールを使用する上での快適さのレベルによって異なります。
使用するフィルタリング方法に関係なく、Xpdf パッケージをインストールする必要があります。
から入手できる http://www.foolabs.com/xpdf/.
アイム Windows することはできません 取得する フィルタ or うろつく 方法 〜へ 作業!
「-S prog」入力メソッドとフィルターの両方が、「popen()」システム コールを使用して、
外部プログラム。 たとえば、外部プログラムが perl スクリプトの場合は、
スクリプトの代わりに perl を実行するように Swish-e に指示します。 Swish-e はスラッシュを
Windows で実行している場合はバックスラッシュ。
たとえば、perl へのパスを次のように指定する必要があります (これが perl の場所であると仮定します)。
システム上で):
インデックスディレクトリ:/perl/bin/perl.exe
または、次のようなフィルターを実行します。
FileFilter .foo e:/perl/bin/perl.exe 'myscript.pl "%p"'
多くの場合、Linux をインストールするだけの方が簡単です。
認定条件 do I index 英語以外 言葉?
Swish-e インデックスは 8 ビット文字のみです。 これは ISO 8859-1 Latin-1 文字セットです。
英語以外の文字 (および記号) が多数含まれています。 に記載されている限り
"WordCharacters" それらは索引付けされます。
実際には、混合しない限り、おそらくどの 8 ビット文字セットにもインデックスを付けることができます。
文字セットは同じインデックスにあり、解析には libxml2 を使用しません (以下を参照)。
「TranslateCharacters」ディレクティブ (SWISH-CONFIG) は、インデックス作成中に文字を変換できます
と検索します。 ある文字から別の文字へのマッピングを指定するには、
「TranslateCharacters」ディレクティブ。
「TranslateCharacters :ascii7:」は、翻訳する定義済みの文字セットです。
7 ビット文字から ascii7 文字。 ":asciiXNUMX:" ルールを使用すると、たとえば次のようになります。
「Ääç」を「aac」に変換します。 これは、「Çelik」、「çelik」、または「celik」を検索すると、すべての検索結果が表示されます。
同じ単語に一致します。
注: 解析に libxml2 を使用する場合、解析されたドキュメントは内部的に変換されます (
libxml2) を UTF-8 に変換します。 これは、索引付け時に ISO 8859-1 Latin-1 に変換されます。 場合には
文字列を UTF-8 から ISO 8859-1 に変換することはできません (非 8859-1 が含まれているため)
文字)、文字列は UTF-8 エンコーディングで Swish-e に送信されます。 これにより、
一部の単語のインデックスが正しくありません。 「ParserWarningLevel」を1以上に設定すると表示されます
UTF-8 から 8859-1 への変換に失敗した場合の警告。
できる I 削除を追加 ファイル from an インデックス?
「--enable-incremental」オプションを付けて swish-e をビルドしてみてください。
この FAQ の残りの部分は、デフォルトの swish-e 形式に適用されます。
Swish-e には現在、インデックスから項目を追加または削除する方法がありません。 しかし、Swish-e インデックス
非常に迅速であるため、ファイルが必要になったときにドキュメント セット全体のインデックスを再作成できることがよくあります。
追加、変更、または削除されます。 リモートサイトをスパイダーしている場合は、検討してください
ローカルに圧縮されたドキュメントをキャッシュします。
段階的な追加は、状況に応じていくつかの方法で処理できます。
毎晩 (または毎週) XNUMX つのメイン インデックスを作成するのがおそらく最も簡単です。
メインのインデックス作成ジョブの間に新しいファイルだけのインデックスを作成し、「-f」オプションを使用します
検索中に両方のインデックスを Swish-e に渡します。
(-f を使用する代わりに) インデックスを XNUMX つのインデックスにマージできますが、明確ではありません。
これには、複数のインデックスを検索するよりも利点があります。
インクリメンタル インデックスはどのように作成しますか?
XNUMX つの方法は、"-N" スイッチを使用して、インデックス作成時にファイル パスを Swish-e に渡すことです。 それ
提供されたファイルよりも「新しい」最終更新日を持つファイルのみをインデックスに登録します
「-N」スイッチで。
このオプションには、Swish-e がすべてのディレクトリ内のすべてのファイルを処理しなければならないという欠点があります。
あたかもそれらが索引付けされるかのように (「-N」のテストは、索引付けの直前に最後に行われます
ファイルの内容のテストが開始され、ファイルに対する他のすべてのテストが完了した後) --
いくつかの新しいファイルを見つけるだけです。
また、"-N" に渡すファイルとして Swish-e インデックス ファイルを使用すると、
インデックス作成が開始された後、インデックス ファイルが書き込まれる前に追加されました。 これは
ファイルがインデックスに追加されません。
別のオプションは、次を指すシンボリックリンクを含む並列ディレクトリツリーを維持することです
メインファイル。 新しいファイルがメイン ディレクトリ ツリーに追加 (または変更) されると、
並列ディレクトリ ツリー内の実際のファイルへのシンボリック リンクを作成します。 次に、インデックスを作成するだけです
インクリメンタル インデックスを生成するための symlink ディレクトリ。
このオプションには、
シンボリックリンクも作成できる新しいファイル。 しかし、Swish-e以来、インデックス作成は非常に高速です
索引付けが必要なファイルのみを確認する必要があります。 完全なインデックス作成を実行すると、
すべてのシンボリックリンクのリンクを解除 (削除) するだけです。
これらの方法には両方とも、ファイルが両方のインデックスに配置される、またはファイルが削除されるという問題があります。
インデックスから除外されました。 インデックス作成中のファイル ロックの使用、および検索中のハッシュ ルックアップ
これらの問題を防ぐのに役立ちます。
I ラン でる of っ しよう 〜へ index my ファイル。
インデックス作成が多くのメモリを占有することは事実です! Swish-e は非常に高速です。
インデックスを作成しますが、メモリを犠牲にします。
最善の答えは、メモリを増設することです。
もう XNUMX つのオプションは、「-e」スイッチを使用することです。 これにより必要なメモリは少なくなりますが、インデックス作成は
インデックス作成中にすべてのデータがメモリに保存されるわけではないため、時間がかかります。 メモリがどれだけ少ないか
インデックスを作成しているドキュメントとハードウェアによって異なります。
あなたは使用しています。
Linux で /usr/doc にあるすべての .html ファイルをインデックス化する例を次に示します。 この最初の例は
無し 「-e」で約 84M のメモリを使用:
270279 個のユニークな単語がインデックス化されました。
23841 個のファイルが索引付けされました。 合計 177640166 バイト。
経過時間: 00:04:45 CPU 時間: 00:03:19
これは 「-e」、約26Mまたはメモリを使用:
270279 個のユニークな単語がインデックス化されました。
23841 個のファイルが索引付けされました。 合計 177640166 バイト。
経過時間: 00:06:43 CPU 時間: 00:04:12
いくつかの小さなインデックスを作成してから、"-M" で結合することもできます。 使用する
マージ中に「-e」を使用すると、メモリが節約されます。
最後に、多数の小さなインデックスを作成する場合は、複数のインデックスを指定できます
「-f」スイッチを使用して検索する場合。 大きな結果セットをプロパティで並べ替えると、
検索時に複数のインデックス ファイルを指定すると遅くなります。
"それも 多くの 開いた ファイル」 を特定いたします。 インデキシング -e オプション
一部のプラットフォームでは、-e エコノミー オプションを使用すると、「開いているファイルが多すぎます」と報告されます。 -e
機能は多くの一時ファイル (377 のようなもの) とインデックス ファイルを使用します。
システムの限界を超えます。
プラットフォームによっては、「ulimit」または「unlimit」を設定する必要がある場合があります。
たとえば、Linux bash シェルでは次のようになります。
$ ulimit -n 1024
または古いSparcの下で
% 開いているファイルを制限しない
My 管理人 言う スウィッシュイー 使用されます あまりに ずっと of CPU!
それはいいことだ! その高価な CPU はビジーであるはずです。
インデックス作成には多くの作業が必要です -- インデックス作成を高速化するために、多くの作業はメモリ内で行われます
これにより、Swish-e が I/O で待機する時間が短縮されます。 しかし、あなたには XNUMX つのことがあります
試みることができます:
「-e」オプションは、Swish-e をエコノミー モードで実行します。このモードでは、ディスクを使用してデータを保存します。
索引付け。 これにより、Swish-e の実行が多少遅くなりますが、使用するメモリも少なくなります。 ですので
ディスクへの書き込み頻度が高くなると、I/O の待機に費やす時間が長くなり、書き込みにかかる時間が短縮されます。
CPU。 多分。
もう XNUMX つは、単純にジョブの優先度を下げることです。 nice(1) コマンド:
/bin/nice -15 swish-e -c search.conf
検索時間が気になる場合は、 -b および -m スイッチを使用していることを確認してください。
一度にページを返します。 結果セットが大きくなることがわかっている場合、
一度に XNUMX ページずつ結果を返したいのですが、多くの場合、同じページが何ページも返されます。
クエリが要求されます。最初にすべてのドキュメントを要求するのが賢明かもしれません
要求し、結果を一時ファイルにキャッシュします。 perl モジュール File::Cache
これを非常に簡単に実現できます。
スパイダリング
認定条件 できる I index ドキュメント on a ウェブ サーバ?
可能であれば、インデックス作成のファイル システム メソッド「-S fs」を使用して、Web 内のドキュメントにインデックスを付けます。
ファイルシステムの領域。 これにより、Web サーバーのスパイダー処理のオーバーヘッドが回避されます。
もっと早く。 (「-S」が指定されていない場合、「-S fs」がデフォルトの方法です)。
これが不可能な場合 (Web サーバーがローカルでないか、ドキュメントが動的に
生成されます)、Swish-e はスパイダリングの XNUMX つの方法を提供します。 まず、httpメソッドが含まれています
索引付けの「-S http」。 いくつかの特別な構成ディレクティブが利用可能です。
スパイダーを制御します (SWISH-CONFIG の「HTTP アクセス方式のみのディレクティブ」を参照してください)。 あ
perl ヘルパー スクリプト (swishspider) は、 SRC スパイダリングを支援するディレクトリ
ウェブサーバー。 にスパイダリングの設定例があります。 confに ディレクトリにあります。
Swish-e 2.2 の時点で、プログラムが使用できる汎用の「prog」ドキュメント ソースがあります。
索引付けのためにドキュメントをフィードします。 多数のサンプル プログラムが、
「prog-bin」ディレクトリには、スパイダー Web サーバーへのプログラムが含まれています。 提供された Spider.pl
プログラムはフル機能で、簡単にカスタマイズできます。
「prog」ドキュメント ソース機能の「http」メソッドに対する利点は、
プログラムは XNUMX 回だけ実行され、swishspider.pl プログラムは「http」で使用されます。
メソッドは、Web サーバーから読み取られるドキュメントごとに XNUMX 回実行されます。 の分岐
Swish-e と perl スクリプトのコンパイルは、時間的に非常にコストがかかる可能性があります。
「spider.pl」プログラムのもう XNUMX つの利点は、追加が簡単で効率的であることです。
Spider.plの構成へのフィルタリング(PDFまたはMS Wordドキュメントなど)、および
重複したインデックス作成を防ぐための MD5 チェック、回避するためのオプションなどの機能が含まれています。
一部のファイルまたはインデックスをスパイダーしますが、スパイダーは避けます。 それはperlプログラムなので、
追加できる機能に制限はありません。
Why ありません ヒュッと振る レポート "./swishspider: 見つかった"?
ファイルはありますか スウィッシュスパイダー エラーメッセージが表示される場所に存在しますか? そうでない場合は、
構成オプション SpiderDirectory を使用して、 スウィッシュスパイダー
プログラムが見つかるか、 スウィッシュスパイダー 実行時に現在のディレクトリにあるプログラム
swish-e。
Windows を実行している場合は、「perl」がパスに含まれていることを確認してください。 入力してみてください パール から
コマンド・プロンプト。
Windows を実行していない場合は、シバン行 (
#!) で始まる swishspider プログラムは、perl の正しい場所を指しています。
通常、これは / usr / bin / perl or /usr/local/bin/perl. また、次のことを確認してください。
に対する実行権限と読み取り権限がある スウィッシュスパイダー.
当学校区の スウィッシュスパイダー perl スクリプトは、索引付けの -S http メソッドでのみ使用されます。
アイム Spider.pl プログラム 〜へ クモ my ウェブ サイト、 焙煎が極度に未発達や過発達のコーヒーにて、クロロゲン酸の味わいへの影響は強くなり、金属を思わせる味わいと乾いたマウスフィールを感じさせます。 一部 大 ファイル
インデックス付き。
「spider.pl」プログラムには、デフォルトで 5MB のファイル サイズの制限があります。 これは次のように変更できます
「max_size」パラメータ設定。 詳細については、「perldoc Spider.pl」を参照してください。
I まだ しない 考える を my ウェブ ページ さ インデックス付き。
当学校区の Spider.pl プログラムには多くのデバッグ スイッチがあり、非常に冗長になる可能性があります。
何が起こっているのか、その理由を説明します。 手順については、「perldoc Spider.pl」を参照してください。
しぶき is スパイダーリング Javascriptを リンク!
Swish は、ブラウザによって生成されるため、Javascript によって生成されたリンクをたどることができません。
文書の一部ではありません。
認定条件 do I クモ その他 ウェブサイト 組み合わせる it my 自分の (ファイルシステム) インデックス?
"-M" XNUMX つのインデックスを XNUMX つのインデックスにマージするか、"-f" を使用してさらに指定することができます。
検索中に複数のインデックス。
「-f」メソッドを使用すると、より良い結果が得られます。
検索
認定条件 do I 制限 検索 〜へ ただ 部品 of インデックス?
パス名でインデックスの「部分」を識別できる場合は、XNUMX つのオプションがあります。
最初のオプションは、ドキュメント パスをインデックス化することです。 これを構成に追加します。
メタネームの swishdocpath
パス名で単語やフレーズを検索できるようになりました。
swish-e -w 'foo AND swishdocpath=(セールス)'
したがって、「foo」という単語が含まれ、ファイルのパスに含まれるドキュメントのみが検索されます
「販売」。 ただし、これらのパスは両方とも
マッチ:
/web/sales/products/index.html
/web/accounting/private/sales_we_messed_up.html
これは、フレーズで検索することで解決できます (「/」は WordCharacter ではないと仮定します)。
swish-e -w 'foo AND swishdocpath=("/web/sales/")'
swish-e -w 'foo AND swishdocpath=("ウェブ販売")' (同じこと)
XNUMX 番目のオプションは、もう少し強力です。 「ExtractPath」ディレクティブを使用すると、
パスのサブセットを抽出して別のメタとして保存するための正規表現
名前:
メタネーム部門
ExtractPath 部門の正規表現 !^/web/([^/]+).+$!$1/
これは、「/web/」で始まるパスに一致し、それ以降のすべてを抽出することを意味します
に、ただし次の「/」は含めずに変数 $1 に保存し、すべてに一致させます
「/」以降。 次に、一致する文字列全体を $1 に置き換えます。 そしてそれは
メタ名「部門」として索引付けされます。
これで、次のように検索できます。
swish-e -w 'foo AND department=sales'
/www/sales/* パス内のドキュメントのみを照合するようにしてください。 ご了承ください
ファイルシステムの完全に異なる領域を同じメタネームにマップできます:
# マーケティング固有のページにフラグを立てる
ExtractPath 部門の正規表現 !^/web/(marketing⎪sales)/.+$!マーケティング/
ExtractPath 部門の正規表現 !^/internal/marketing/.+$!marketing/
# 技術部門のページにフラグを立てる
ExtractPath 部門の正規表現 !^/web/(tech⎪bugs)/.+$!テック/
最後に、もっと複雑な場合は、"-S prog" を使用して perl プログラムを作成するか、
各ファイルを処理するときにフィルターを使用してメタ タグを設定します。
認定条件 is ランキング 計算された?
「swishrank」プロパティ値は、ランキング スキーム (またはアルゴリズム) に基づいて計算されます。
選択しました。 この議論では、いつでも単語 ファンシー 使用されている場合は、相談する必要があります
詳細については、実際のコードを参照してください。 結局のところ、それはオープンソースです。
ランキングに影響を与えるためにできること:
メタネームランク
特定のメタネーム値に他の値よりも多かれ少なかれバイアスをかけるようにインデックスを構成できます。
SWISH-CONFIG の「MetaNamesRank」構成オプションを参照してください。
ランキングの場合総単語数を無視する
構成ファイルで 1 (デフォルト) または 0 に設定します。 SWISH-CONFIG を参照してください。 注: 設定する必要があります
これを 0 にすると、IDF ランキング スキームが使用されます。
構造
各 HTML ドキュメント内の各用語の位置には、
その言葉が現れる文脈。 構造体の値は人為的に膨らませるために使用されます
その特定の文書における各用語の頻度。 これらの構造的価値は
で定義された config.h:
#RANK_TITLE 7 を定義
#RANK_HEADER 5 を定義
#RANK_META 3 の定義
#定義RANK_COMMENTS 1
#定義 RANK_EMPHASIZED 0
たとえば、ドキュメントのタイトルに「foo」という単語がある場合、Scheme は
そのドキュメントを、「foo」がさらに 7 回出現したかのように扱います。
すべてのスキームは、次の特性を共有しています。
AND 検索
ランク値は、すべての AND 条件について平均化されます。 括弧 () 内の用語
単一の用語として平均化されます (これは認められた弱点であり、TODO に記載されています
リスト)。
OR検索
ランク値は合計され、OR された用語の各ペアに対して XNUMX 倍になります。 これにより、
複数の OR された用語を含むドキュメントのランクが高くなります。
スケーリングされたランク
ドキュメントの未処理のランク スコアが計算された後、最終的なランク スコアが計算されます。
ファンシーな「log()」関数を使用します。 次に、すべてのドキュメントが基本スコアに対してスケーリングされます
したがって、最上位のドキュメントの「swishrank」値は常に
1000.
ここでは、さまざまなスキームがどのように機能するかについて簡単に説明します。 括弧内の数字
名前の後には、「swish-e -R」または「RankScheme()」でそのスキームを呼び出すための値です。
デフォルト(0)
デフォルトのランキング方式では、用語がドキュメントに出現する回数が考慮されます
(頻度)、MetaNamesRank および構造値。 ランクがまとめられるかも
を次のように定義しています:
DocRank = (構造 + メタバイアス) の合計
コンパイル時に DEBUG_RANK 変数が設定された次の出力を検討してください。
ランキング方式: 0
位置 0 の単語エントリ 6 には構造体 7 があります
位置 1 の単語エントリ 64 には構造体 41 があります
位置 2 の単語エントリ 71 には構造体 9 があります
位置 3 の単語エントリ 132 には構造体 9 があります
位置 4 の単語エントリ 154 には構造体 9 があります
位置 5 の単語エントリ 423 には構造体 73 があります
位置 6 の単語エントリ 541 には構造体 73 があります
位置 7 の単語エントリ 662 には構造体 73 があります
ファイル番号: 1104。生ランク: 21。頻度: 8 スケーリングされたランク: 30445
構造集計:
struct 0x7 = 1 のカウント ( HEAD TITLE FILE ) x 8 のランク マップ = 8
struct 0x9 = 3 のカウント ( BODY FILE ) x 1 のランク マップ = 3
struct 0x29 = 1 のカウント (HEADING BODY FILE) x 6 のランク マップ = 6
struct 0x49 = 3 のカウント (EM BODY FILE) x 1 のランク マップ = 3
すべての単語インスタンスは基本スコア 1 から始まります。
その単語位置の構造値と任意の
設定したバイアス。 上記の例では、生のランクは「1 + 8 + 3 + 6 + 3 =
21」。
次の行を考えてみましょう。
struct 0x7 = 1 のカウント ( HEAD TITLE FILE ) x 8 のランク マップ = 8
つまり、ファイルのタイトルに私たちの単語のインスタンスが XNUMX つあったということです。 文脈です
にあったタグセット、内部. <title> が最も具体的です
構造であるため、RANK_TITLE スコアは 7 になります。基本ランクの 1 に構造を加えたものです。
スコア 7 は 8 に等しい。タイトルにこの単語のインスタンスが XNUMX つある場合、
スコアは「8 + 8 = 16」になります。
IDF (1)
IDF は Inverse Document Frequency の略です。 それは取るための派手なランキング用語です
に加えて、インデックス全体での用語の合計頻度を考慮に入れます。
単一のドキュメントでの用語の頻度。 IDF ランキングも、
その関連性を判断するためのドキュメント内の単語。 doc make でより頻繁に使用される単語
そのドキュメントのランクが高くなり、長いドキュメントが短いドキュメントよりも高く重み付けされることはありません。
IDF スキームは次のように要約できます。
DocRank = (密度 * idf * (構造 + メタバイアス) ) の合計
DEBUG_RANK からの次の出力を検討してください。
ランキング方式: 1
ファイル数: 1104 単語スコア: 1 頻度: 8 ファイル総数: 1451
合計単語頻度: 108 IDF: 2564
合計単語数: 1145877 このドキュメント内のインデックス付き単語数: 562
平均単語: 789 密度: 1120 単語の重み: 28716
位置 0 の単語エントリ 6 には構造体 7 があります
位置 1 の単語エントリ 64 には構造体 41 があります
位置 2 の単語エントリ 71 には構造体 9 があります
位置 3 の単語エントリ 132 には構造体 9 があります
位置 4 の単語エントリ 154 には構造体 9 があります
位置 5 の単語エントリ 423 には構造体 73 があります
位置 6 の単語エントリ 541 には構造体 73 があります
位置 7 の単語エントリ 662 には構造体 73 があります
IDF加重後のランク: 574321
スケーリングされたランク: 132609
構造集計:
struct 0x7 = 1 のカウント ( HEAD TITLE FILE ) x 8 のランク マップ = 8
struct 0x9 = 3 のカウント ( BODY FILE ) x 1 のランク マップ = 3
struct 0x29 = 1 のカウント (HEADING BODY FILE) x 6 のランク マップ = 6
struct 0x49 = 3 のカウント (EM BODY FILE) x 1 のランク マップ = 3
これはデフォルトのスキームに似ていますが、ファイルの総数が
インデックスと総単語頻度 (ドキュメント頻度とは対照的に) は両方とも
方程式の一部。
ランキングは複雑なテーマです。 SWISH-E により、より多くのランキング スキームを開発できます
-Rオプション(swish-eコマンドから)とRankSchemeを使用して実験しました
(API ドキュメントを参照してください)。 議論リストを介して実験し、発見を共有してください。
認定条件 できる I 制限 検索 〜へ タイトル、 体、 or コメント?
「-t」スイッチを使用します。
I することはできません 制限 検索 〜へ タイトル/本文/コメント。
または、 I することはできません サーチ メタ 名前、 を 名 索引付けされた as "プレーン"。
#define INDEXTTAGS が 1 に設定されている場合は、config.h ファイルをチェックインします。設定されている場合は、0 に変更します。
再コンパイルして、再度インデックスを作成します。 INDEXTTAGS が 1 の場合、すべてのタグがプレーン テキストとしてインデックス化されます。
つまり、「タイトル」、「h1」などにインデックスを付けると、インデックスの意味が失われます。 もしも
INDEXTTAGS が 0 に設定されている場合でも、メタ タグとコメントのインデックスを作成します。
それ以外の場合は、IndexComments ディレクティブを使用してユーザー構成ファイルで指定します。
また、構成ファイルの「UndefinedMetaTags」設定を確認してください。
私はしました 試み ランニング 含まれました CGI スクリプト I 取得する a "内部 サーバー エラー"
CGI スクリプトのデバッグは、このドキュメントの範囲外です。 内部サーバーエラー
基本的には、「Web サーバーのログでエラー メッセージを確認する」ことを意味します。
shebang (#!) 行、perl モジュールの欠落、FTP 転送エラー、または単に
プログラム。 CGIスクリプト swish.cgi 会場は 例 ディレクトリにはデバッグが含まれています
提案。 詳細については、「perldoc swish.cgi」と入力してください。
また、インターネット上には非常に多くの CGI FAQ があります。 簡単なウェブ検索は
ヘルプを提供します。 最後の手段として、ウェブ管理者に助けを求めることもできます...
日時 I 試します 〜へ ビュー swish.cgi ページ I 中身 of パール プログラム。
Web サーバーは、プログラムを CGI スクリプトとして実行するように構成されていません。 この問題は
"perldoc swish.cgi" に記述されています。
認定条件 do I make スウィッシュイー ハイライト 言葉 in サーチ 結果?
短い答え:
次の場所にある提供された swish.cgi または search.cgi スクリプトを使用します。 例 ディレクトリにあります。
長い答え:
戻るときにソース ドキュメントにアクセスできないため、Swish-e はできません。
もちろん結果。 しかし、あなたが作成したフロントエンド プログラムは、用語を強調することができます。 あなたの
プログラムはソース ドキュメントを開き、正規表現を使用して置換できます。
強調表示または太字の単語を含む検索用語。
しかし、それは最も単純なソース ドキュメント以外では失敗します。 HTML文書の場合、
たとえば、ドキュメントを単語とタグ (およびコメント) に解析する必要があります。 あなたの一言
強調したいのは、複数の HTML タグにまたがる場合や、URL 内の単語である場合があります。
リンク テキスト全体を強調表示します。
HTML::Parser や XML::Parser などの Perl モジュールにより、単語の抽出が可能になります。 次、
Swish-e は WordCharacters、BeginCharacters、
EndCharacters、IgnoreFirstChar、および IgnoreLast, char を使用して「単語」を定義します。 それはあなたです
両側に空白がある文字列を単語と見なすことはできません。
次に、TranslateCharacters や HTML エンティティなどによって、ソース ワードが次のように変換されます。
Swish-eに関する限り、別の何か。 最後に、検索は次のように制限できます。
メタネームなので、強調表示をソースの一部だけに制限する必要があるかもしれません
書類。 フレーズ検索とストップワードを方程式に投入すると、それが
解決するのは簡単な問題ではありません。
Swish-e はいくらかの助けを提供するので、すべての希望が失われるわけではないと考えました。 「-H」オプションの使用
WordCharacters の現在のインデックス (またはインデックス) 設定をヘッダーに返します。
(およびその他) インデックス作成中にソース ドキュメントを解析する際に、ソース ドキュメントを解析するために必要です。
そして、クエリをどのように解析したかを示す "Parsed Words:" ヘッダーを返します
初めの。 あいまい索引付け (単語ステミング、soundex、または metaphone) を使用する場合は、
また、"Parsed
Words:" Swish-e によって返されます。
Swish-e ステミング コードは、Swish-e Perl モジュールを使用して利用できます。
(SWISH::API) または C ライブラリ (swish-e ディストリビューションに含まれています)、または
SWISH::Stemmer モジュールは CPAN で利用できます。 また、CPANにはモジュールがあります
テキスト::ダブルメタフォン。 SWISH::API を使用すると、おそらく最良のステミング サポートが提供されます。
Do フィルター 効果 パフォーマンス 間に 探す?
いいえ。フィルター (FileFilter または「prog」メソッド経由) は、検索インデックスの構築にのみ使用されます。
データベース。 検索リクエスト中は、フィルター呼び出しはありません。
I 持ってる read よくあるご質問 焙煎が極度に未発達や過発達のコーヒーにて、クロロゲン酸の味わいへの影響は強くなり、金属を思わせる味わいと乾いたマウスフィールを感じさせます。 I まだ 持ってる 質問 自己紹介 Swish-e。
Swish-e ディスカッション リストがおすすめです。 http://swish-e.org/. メールしないでください
開発者に直接。 リストは、質問をするのに最適な場所です。
投稿する前にお読みください 質問 そして トラブルシューティング 「インストール」ページにあります。
Swish-e ディスカッション リストのアーカイブも検索してください。
swish-e ウェブサイト。
要するに、助けを求めるときは、必ず次の内容を含めてください。
* swish-e バージョン (./swish-e -V)
* 何にインデックスを付けているか (およびおそらくサンプル)、およびファイルの数
* Swish-e 設定ファイル
* Swish-e が報告しているエラー メッセージ
ドキュメント インフォ
$Id: SWISH-FAQ.pod 2147 2008-07-21 02:48:55Z カーペット $
.
onworks.net サービスを使用してオンラインで SWISH-FAQ を使用する