弾性検索を使用して大規模な住所データベースを検索し、他のアプリケーションのようにするには、最初に郵便番号で始まります。検索クエリ。弾性検索:フィルタを使用してクエリを行う必要があります
と私はちょうど$postcode
のためにすべてを吐き出すことが
my $scroll = $e->scroll_helper(index => 'pdb', search_type => 'scan', size => 100,
body => {
query => {
bool => {
filter => [
{match => { pcode => $postcode }},
],
should => [
{match => { address => $keyword }},
{match => { name => $keyword }},
],
}
}
}
);
を行うと、関係なく、$keyword
が結果セットであるもののがさらに低減されていません。
私は$postcode
を必須条件とする必要がありますが、別途または別の2つのフィールドもフルテキスト検索として考慮に入れる必要があります。 はどのように私はこの(Imはドキュメントを見ているので、何か提案は歓迎間違っjson-> perlのハッシュリファレンスを解釈される可能性があります)仮想の例えば
を行う必要があります。ユーザーはNW1 4AQ
入る 、上記のクエリはすぐに言う、戻ります、ユーザーがPortland
とにその郵便番号を照会すると、両方の結果を得る代わりに、ポートランドストリートだけが結果になると予想しています。今のところこれで、両方の項目を返すだけです。それはOR
を挿入しているように感じている、(むしろ真/偽よりカウンタである)1としてminimum_should_match
を持つ
bool => {
must => [
{match => { pcode => $postcode }},
],
should => [
{match => { address => $keyword }},
{match => { name => $keyword }},
],
minimum_should_match => 1,
}
:私は次は私がbool
セグメントのために何をしたいんことがわかっ常識に従い
が、それは[、最小限の完全な、かつ検証例]を作成することができます(http:// stackoverflowの.com/help/mcve)? –
単語的な仮説の例が追加されました。 – Recct