0

Luceneで、さまざまな言語のRDFリテラルを持つ可能性のあるフィールドにインデックスを付けようとしています。私がこれまでに見たアプローチのほとんどは次のとおりです。

  • 単一のインデックスを使用します。各ドキュメントには、使用する言語ごとにフィールドがあります。または

  • Mインデックスを使用します。Mはコーパス内の言語の数です。

Lucene 2.9+には、用語に属性を付加できるペイロードと呼ばれる機能があります。言語(またはデータ型などの他の属性)情報を格納するためにこのメカニズムを使用している人はいますか?他の2つのアプローチと比較して、パフォーマンスはどうですか?それがどのように行われるかを示すソースコードへのポインタがあれば役立ちます。ありがとう。

4

2 に答える 2

0

場合によります。

  1. 「すべての英語のテキストで「foo」を検索する」のようなものを許可しますか?その場合、言語ごとに1つのフィールドが必要になります。
  2. または、「すべてのテキストで「foo」を検索し、一致する言語が見つかったユーザーを表示しますか?」これが必要な場合は、ペイロードまたは個別のフィールドのいずれかが機能します。
  3. これを行う別の方法は、1つのフィールドのすべてのテキストにインデックスを付けてから、ドキュメントの言語を示す別のフィールドを作成することです。(各ドキュメントが単一の言語であると仮定します。)その場合、検索はのようになります+text:foo +language:english

効率の観点から:用語ごとに言語の名前を繰り返す必要があり、ペイロードに基づいて検索することはできないため、ペイロードは避けたいと思うでしょう(少なくとも簡単ではありません)。

于 2011-03-10T19:59:50.150 に答える
0

つまり、基本的にluceneはランキングアルゴリズムであり、文字列を調べて他の文字列と比較するだけです。それらは異なる文字エンコードでエンコードできますが、それらの類似性は同じです。SnowBallAnalyzerにサポートされている言語ステマーをロードしてください。結果が得られるはずです。スペイン語や中国語のように

于 2011-03-11T04:18:02.403 に答える