2016-07-02 34 views
0

検索エンジンとフィルタエンジンをElasticsearchに変更する予定です。多くのドキュメントを調べることによって、私はelasticsearchがファセットを作成する能力を持っていることを発見しました。私は、私の左のフィルタナビゲーションサイドバーにいくつかの面を作り、elastsearchのカテゴリフィールドを使ってフィルタリングして私の製品とファセットをクエリしました。Elasticsearchでの完全一致(ファセット検索)

しかし、私はどのように選択されたファセットのelasticsearchに問い合わせるのか分かりません。

私はelasticsearch PHPクライアントのbodyタグに

'filter' => [ 
    'bool' => [ 
     'must' => [ 
      ['match_phrase' => [ 'Material' => 'Aluminum' ]], 
      ['match_phrase' => [ 'Length' => '1/2']] 
     ] 
    ] 
] 

にこのコードを使用していました。それは実際に動作しますが、私は長さ1/2-3または1/2-4を持つ他の製品を持っています。私が1/2の質問をすると、Elasticも1/2-3と1/2-4を得ます。なぜなら、 '1/2-3'と '1/2-4'には '1/2'も含まれているからです。

1/2-3,1/2-4の1/2でない商品を正確に検索して取得する方法を知りたいですか?

ありがとうございます!

注:ファセットは廃止予定です。私はそれに慣れているので、私はその言葉を使用しています。今はElasticsearch 2.3で集計されています。と私はそのバージョンを使用しています。*

答えて

0

私の解決策を見つけました!

match_phraseの代わりにtermメソッドを使用しました。それは私が必要とするものを正確に得る。 match_phraseの代わりにmatchが含まれていない完全一致を検索します。 Match_phraseは正確なフレーズを並べて検索しています。

ただし、正確な結果を得るには、not_analyzedでフィールドを作成する必要があります。

関連する問題