0

アプリケーションにsolr 3.6を実装しています.テキストファイルに以下のデータがあるため..

**

date=2011-07-08 time=10:55:06 timezone="IST" device_name="CR1000i" device_id=C010600504-TYGJD3 deployment_mode="Route" log_id=031006209001 log_type="ウイルス対策" log_component="FTP" log_subtype= "Clean" status="Denied" priority=Critical fw_rule_id="" user_name="hemant" virus="codevirus" FTP_URL="ftp.myftp.com" FTP_direction="download" filename="hemantresume.doc" file_size="550k " file_path="deepti/virus.lnk へのショートカット" ftpcommand="RETR" src_ip=10.103.6.100 dst_ip=10.103.6.66 protocol="TCP" src_port=2458 dst_port=21 dstdomain="myftp.cpm" sent_bytes=162 recv_bytes= 45 message="サーバー ftp.myftp からサイズ 550k のファイル resume.doc の FTP ダウンロード。ファイルがウイルス コードウイルスに感染しているため、.com を完了できませんでした」

**

今、私はキーと値のペアに基づいて上記のデータを分割したい..そして、キーに基づいて各値にインデックスを付けたい..変更を構成ファイルに含める必要がある.. work.しかし、構造全体にインデックスを付けたい..誰でもこれについて私を助けてもらえますか??? ありがとう..

4

2 に答える 2

1

私が知っているトークナイザーでこれを行うものはありません。

静的フィールドの使用:

すべての「キー」を schema.xml のフィールドとして定義する必要があります。関連するタイプ (日付、文字列など) が必要です。

これらのフィールドを使用して POJO を作成し、このキーと値のペアを解析して POJO に入力します。solrj を使用して、この pojo を solr に追加します。

動的フィールドの使用:

この場合、スキーマでキーを定義する必要はありませんが、(データのタイプに基づいて) 動的フィールドを使用します。キーと値のペアを解析して、solr ドキュメントに追加する必要があります。これらのフィールドは、solrInputdoc.addField メソッドを使用して追加する必要があります。

新しいキーと値のペアの追加を定義すると、クライアントはこの新しいキーの存在を知る必要があります。しかし、あなたのインデクサーはそうする必要はありません。

于 2012-06-26T14:04:46.913 に答える
0

これは、トークナイザーでは実行できません。フィールドごとにトークナイザーが呼び出されますが、データをフィールドに渡す前に処理が必要です。

Transformer でこれを行うことも、XML として送信する前に簡単な変換を行うこともできます。そのフォーマットを読み取り、Solr 送信用の適切な XML フォーマットを生成するものを作成することは難しくありません。Python では難しいことではありません。

この入力の場合:

date=2011-07-08 time=10:55:06 timezone="IST" device_name="CR1000i"

スキーマに一致するフィールドを作成し、以下を生成する必要があります。

<doc>
  <field name="date">2011-07-08</field>
  <field name="time">2011-07-08</field>
  <field name="timezone">IST</field>
  <field name="device_name">CR1000i</field>
  ...

また、この前処理では、ほぼ確実に最初の 3 つのフィールドを UTC の単一の日時に変換する必要があります。

Solr XML 更新形式の詳細については、http ://wiki.apache.org/solr/UpdateXmlMessages を参照してください。

現時点で Apache wiki がダウンしているため、エラー ページが表示された場合は再試行してください。

于 2012-06-26T14:59:43.113 に答える