私は新しい方法で文書を索引付けするための研究を行っています。具体的には、 既存の索引構造を変更して、索引付け技術を試してみたいと思います。例えば、Luceneが索引付け時に用語とDoc IDを保存する索引を逆転させている場合、その構造について、その用語に関する位置や統計などの他の情報を保存するように拡張したいと考えています。どのように私はそのような拡張を作るつもりですか?そのような拡張を行っているLuceneよりも優れたオープンソースプロジェクトがありますか?ありがとう。索引付け(転記)の変更Luceneの構造
答えて
のLuceneがインデックス化時に用語とドク同上のを保存し、インデックスを反転した場合、私はそのような用語の位置や統計などの他の情報を保存するためにその構造を拡張したいと思います...
Luceneの各投稿エントリは非常に一般的です。 Luceneはすでに、各投稿エントリに関連付けられたペイロードオブジェクトのオブジェクトの助けを借りて、ジェネリック型(オブジェクト)をバイトストリームの形で保存するための規定を持っています。
ペイロードの非常に一般的な使用は、用語の位置を格納することです。たとえば、用語tの場合は、位置1および3の文書D1、および位置2および5のD2に出現する場合、転記に異なるエントリとしてtの以下のように保存することができます。
*t* => (D1,1) (D1,3) (D2, 2) (D2, 5)
これを実行する最も簡単な方法は、LuceneのクラスDelimitedPayloadTokenFilterを使用してだろう。テキストを分析しながら、各用語の横にある用語の位置を特定の文字で区切って書き出すだけです。 '|'、次の例に示すように。
class PayloadAnalyzer extends Analyzer {
private PayloadEncoder encoder;
PayloadAnalyzer(PayloadEncoder encoder) {
this.encoder = encoder;
}
public TokenStream tokenStream(String fieldName, Reader reader) {
TokenStream result = new WhitespaceTokenizer(reader);
result = new LowerCaseFilter(result);
result = new DelimitedPayloadTokenFilter(result, '|', encoder);
return result;
}
}
ペイロードに格納された値をデコードするには、次のようなものを使用します。
class PayloadSimilarity extends DefaultSimilarity {
@Override
public float scorePayload(String fieldName, byte[] bytes, int offset, int length) {
return PayloadHelper.decodeFloat(bytes, offset);
}
}
その後、文書のランキングの間、これらの用語オフセットを利用するためにPayloadTermQueryクラスを使用することができます。
あなたは、他の用語に固有の情報を格納することをお勧めします - i)品詞(POS)タグ、ii)用語の単語ベクトルなど - ペイロード内に配置し、ランキング中にこれらの機能をすべて組み合わせて使用します。
Luceneは良いターゲットです。はい(正直言って良いオプションがあるかどうかはわかりません)。
あなたはカスタムコーデックを作成することになりますね。モダンなLuceneの現在のコーデックの背後にあるメインマンのthis blog postを参照してください。彼はコーデックを理解して遊ぶのに便利なSimpleTextCodecを紹介しています。もちろん、プロダクション用ではありません。例えば
- 1. Luceneのセマンティクスによる索引付け
- 2. Luceneの数字の多いテキストの索引付け
- 3. Lucene複数の文書の索引付け
- 4. Hibernate SearchとLucene ILISTの最初の索引付け
- 5. luceneで索引付けされた電子メールアドレスの照会
- 6. 文書索引データベース構造?
- 7. 索引付け中にペイロードを追加し、luceneで検索する
- 8. _rpermの構文解析における索引付け方法
- 9. 構造変数を関連付ける?
- 10. Solr索引付け -
- 11. PILイメージの索引付け
- 12. MySQLテーブルの索引付け
- 13. HDFSシーケンスファイルの索引付け
- 14. エンティティの索引付け
- 15. サブマトリクスの索引付けR
- 16. NoSQL:索引付けとキーワードベースの検索
- 17. 索引付けされていない座標の索引付け。
- 18. Lucene:ストリームを索引付けする(バッファーでは使用できません)
- 19. Lucene 6.6.0の索引時間フィールドレベルのブースティング?
- 20. Gitでソース索引付け
- 21. udaスレッド索引付け
- 22. Win 10 SOLR索引付け
- 23. 変更gitの構造
- 24. データフレーム構造の変更R
- 25. 変更アレイ構造
- 26. PHPでのテキストファイルの索引付け
- 27. Javaでのテキストファイルの索引付け
- 28. ナンシーアレイの索引付け(4つのディメンション)
- 29. 複数の列の索引付け
- 30. mysqlデータベースの結合の索引付け