0

次のクエリがあります。

{
"from": 0, 
"query": {
    "custom_filters_score": {
        "filters": [
            {
                "boost": 1.5, 
                "filter": {
                    "term": {
                        "format": "test1"
                    }
                }
            }, 
            {
                "boost": 1.5, 
                "filter": {
                    "term": {
                        "format": "test2"
                    }
                }
            }
        ], 
        "query": {
            "bool": {
                "must": {
                    "query_string": {
                        "analyzer": "query_default", 
                        "fields": [
                            "title^5", 
                            "description^2", 
                            "indexable_content"
                        ], 
                        "query": "blah"
                    }
                }, 
                "should": []
            }
        }
    }
}, 
"size": 50
}

{"format":"test1"}ドキュメントを正しく読んでいれば、それはそれらにあるものを後押ししているはずです。

ただし、使用するexplainとそれ"custom score, no filter match, product of:"が結果であり、フィルターに一致する返されたドキュメントのスコアはこのフィルターによって変更されないことがわかります。

私は何を間違っていますか?

編集:スキーマは次のとおりです。

mapping:
  edition:
    _all: { enabled: true }
    properties:
      title:       { type: string, index: analyzed }
      description: { type: string, index: analyzed }
      format:      { type: string, index: not_analyzed, include_in_all: false }
      section:     { type: string, index: not_analyzed, include_in_all: false }
      subsection:  { type: string, index: not_analyzed, include_in_all: false }
      subsubsection:  { type: string, index: not_analyzed, include_in_all: false }
      link:        { type: string, index: not_analyzed, include_in_all: false }
      indexable_content: { type: string, index: analyzed }

典型的なドキュメントが次のようなものであると仮定しましょう:

{
    "format": "test1",
    "title": "blah",
    "description": "blah",
    "indexable_content": "keywords here",
    "section": "section",
    "subsection": "child-section",
    "link":"/section/child-section/blah"
}
4

1 に答える 1

0

「フィルターが一致しません」と表示されている場合は、クエリ内のどのフィルターにも一致しなかったことを意味します。これの最も可能性の高い理由は、クエリに一致するレコードに「test1」という用語が含まれていないことです。残念ながら、マッピングとテストデータを提供しなかったため、そこで何が起こっているのかを確実に把握することは困難です。

このクエリを実行して、検索条件に一致し、ブーストする必要があるレコードが実際に見つかるかどうかを確認してください。

{
    "from": 0,
    "query": {
        "bool": {
            "must": [{
                "query_string": {
                    "analyzer": "query_default",
                    "fields": ["title^5", "description^2", "indexable_content"],
                    "query": "blah"
                }
            }, {
                "term": {
                    "format": "test1"
                }
            }]
        }
    },
    "size": 50
}

クエリは問題なく表示され、提供された情報に基づいて機能するはずです:https ://gist.github.com/4448954

于 2013-01-04T00:52:10.193 に答える