2
私はFr/EnのWebサイトを持っています。情報は英語またはフランス語で書かれています。 )。モンゴイドのシンプルなモデルを考えてみましょうElasticsearchはフランス語または英語のフィールドのステミングを構成します
class Profile
field :job_name
field :company_name
end
ステミングをサポートするジョブ名をインテリジェントに検索します。私は問題が生じるので設定している
mapping do
indexes :job_name, type: :string, fields: {
french: { type: :string, analyzer: 'french' },
english: { type: :string, analyzer: 'english' }
}
end
:だから基本的に私は、私は両方の言語でフィールドを分析し、インデックス部分のために何かを考え出していると信じて、そのフィールド
のフランス語+英語アナライザをしたいです検索。私は実際にはありません。私のデフォルトの検索エンジンごとのフィールド高めるとマルチマッチを使用しています、と私は本当にそれの上にアナライザspcifyする方法を理解していない:「アハト」を検索する際に
query: {
filtered: {
query: {
multi_match: {
query: query,
fields: [
"company_name^3",
"job_name^2",
],
type: "best_fields",
tie_breaker: 0.3
}
}
}
}
理想的には、(フランス語購入)ジョブ名が
- "gestionnaire D'アハト"( "D '" 接頭辞を参照)を含んでいる場合、エンジンは、結果を返す必要があり "achatsアングロ"(複数を参照してください)。
そしてそれはまた、同様の英語の単語
EDITのために働く必要があります。私のESインデックス(「なし」正常です?)
{
"mydb": {
"aliases": {},
"mappings": {
"profile": {
"properties": {
"company_name": {
"type": "string"
}
"job_name": {
"type": "string",
"index": "no",
"fields": {
"english": {
"type": "string",
"analyzer": "english"
},
"french": {
"type": "string",
"analyzer": "french"
}
}
}
}
},
"settings": {
"index": {
"creation_date": "1469789941429",
"number_of_shards": "5",
"number_of_replicas": "1",
"uuid": "HHN-rWTTStCXDgQtJMTEPg",
"version": {
"created": "2030499"
}
}
},
"warmers": {}
}
}
ありがとうございます。残念ながら、それは動作していないようです。私は仕事の名前が「何かのバイヤー」で誰かを作ろうとしましたが、「Profile.search( 'buyer')」は結果を返さなかったのですが、買い手の場合は –
でした。 ES( 'curl'やSense)をRubyクライアントなしで追加することができます。私はちょうど '何かのバイヤー'とテストし、クエリが動作します。たとえば、Elasticsearchのインデックスマッピングが、あなたが思っているものであることを確認してください。あなたの投稿でRubyのコードを提供しましたが、Elasticsearchのレベルではマッピングですか? –
たとえば、 'curl -XGET" http:// localhost:9200/index_name/_mapping "を実行して、インデックスのマッピングを取得します。 –