0

Railsモデルに次のタイヤマッピングがあります。

   mapping do

     indexes :name, analyzer: 'arabic', boost: 10

     indexes :city_name, analyzer: 'arabic', boost: 5

     indexes :description, analyzer: 'arabic' 

   end

複数の言語をカバーできるようにするための最良の方法は何ですか(英語などを追加したい場合)?

4

1 に答える 1

1

重要なのは、言語ごとに特定のフィールドを使用してデータにインデックスを付ける必要があるということです。
テキスト分析(ステミング、ストップワード、同義語など)に応じて言語を適用する各フィールドには、言語自体に応じて特定のマッピングが必要になります。タイトルとコンテンツフィールドがあるとしましょう。言語ごとにこれらのフィールドがいくつか必要になります。
次に、すべてのドキュメントを同じインデックス、同じタイプでインデックス付けし、言語を含むフィールドを追加することを決定できます。それ以外の場合は、各言語を異なるタイプとしてインデックス付けできます。これは、最初のオプションと同じですが、クエリ時に言語フィルターを手動で指定する必要はありません。次のようにURL内で言語をタイプとして指定する限り、フィルターは「自動的に」適用されます。

curl -X GET http://localhost:9200/index/en/_search -d '{
  "query" : {"match_all" : ""}
}

それ以外の場合は、言語ごとに異なるインデックスを使用することもできます。それは本当にあなたのデータ、それがどのくらいの大きさになるか(言語ごとにいくつのドキュメント?)そしてあなたがどのようにクエリをするか(常に言語ごとに、あるいは例えば異なる言語を混ぜることができますか?)に依存します。

また、 Shayが最近BerlinBuzzwordsで行ったデータデザインパターンの話はあなたにとって興味深いかもしれません。

于 2012-10-03T20:43:22.317 に答える