2009-06-18 1 views
0

名前付きエンティティを探すSolrでカスタムTokenizerを作成しました。私はこの情報を使って、lucene/solr文書内の別々のフィールドにデータを入れることができるようにしたいと考えています。Solr:Tokenizerから別のフィールドを取り込みます

例として、テキストから抽出されたすべてのロケーション名を「locations」という多値フィールドに取り込みたいとします。場所を抽出するために、最初にテキストをトークン化して単語を分離し、どのトークンが場所であるかを判断する。このプロセスの後、トークナイザのトークンを発行したいだけでなく、テキストから抽出されたすべてのロケーション名をフィールド "locations"に設定します。

私が行った研究から、TokenizerまたはTokenizerFactoryからSolrDocumentオブジェクトにアクセスする方法はないため、ここからフィールドを取り込む方法はありません。

これまでの解決策は、テキストを処理してフィールドを抽出するカスタムUpdateRequestProcessorFactoryを作成し、Tokenizerがトークンを取得するためにテキストAGAINを処理することです。私はこの作業を行う方法を見つけて、そのテキストを一度だけ処理したいと考えています。

答えて

1

私はそれを行う方法は、あなたが撮影しているように見える何というあまりエレガントです:

私は名前付きエンティティ認識を使用して文書を前処理すると、別のファイルに実体のすべてを保存します。次に、私がSolrに公開するときに、このファイルからエンティティを読み込み、エンティティフィールド(人、場所、組織で異なる)を読み込むだけです。これは単純化することができましたが、すでに他の作業のために解析を行っていたので、すでに存在していたものを再利用する方が簡単でした。

0

私はluceneで動作すると思いますが、solrで可能かどうかはわかりません。典型的なトークンストリームチェーンの外側に文字列をトークン化するには、NOT_ANALYZEDオプションを使用して手動でトークンをドキュメントに追加することをお勧めします。それぞれのトークンをdocument.add(...)で個別に追加する必要があります。これはluceneが検索のための単一のフィールドとして扱うものです。

関連する問題