ElasticSearch更多权重与完全匹配

时间:2014-03-27 20:33:06

标签: search lucene elasticsearch pyelasticsearch

我使用弹性搜索新闻文章搜索。如果我搜索“Vlamadir Putin”,它的作用是因为他在新闻中很多,Vlamidir和Putin都不是很受欢迎。但如果我搜索“Raja Ram”,它就行不通了。我有一些“Raja Ram”的文章,但有一些“Raja Mohanty”和“Ram Srivastava”。这些文章的排名高于引用“Raja Ram”的文章。我的tokenizer或搜索功能有什么问题吗?

    es.indices.create(
            index="article-index",
            body={
                    'settings': {
                            'analysis': {
                                    'analyzer': {
                                            'my_ngram_analyzer' : {
                                                    'tokenizer' : 'my_ngram_tokenizer'
                                            }
                                    },
                                    'tokenizer' : {
                                            'my_ngram_tokenizer' : {
                                                    'type' : 'nGram',
                                                    'min_gram' : '1',
                                                    'max_gram' : '50'
                                            }
                                    }
                            }
                    }
            },
            # ignore already existing index
            ignore=400
    )

res = es.search(index="article-index", fields="url", body={"query": {"query_string": {"query": keywordstr, "fields": ["text", "title", "tags", "domain"]}}})

1 个答案:

答案 0 :(得分:2)

您可以使用elasticsearch的{​​{3}}选项

但是你不能提到多个搜索字段,而是使用_all字段

您的查询将是
res = es.search(index =“article-index”,fields =“url”,body = {“query”:“match_phrase”:{“_ all”:“keywordstr”}}) < / p>