我使用弹性搜索新闻文章搜索。如果我搜索“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"]}}})
答案 0 :(得分:2)
您可以使用elasticsearch的{{3}}选项
但是你不能提到多个搜索字段,而是使用_all字段
您的查询将是
res = es.search(index =“article-index”,fields =“url”,body = {“query”:“match_phrase”:{“_ all”:“keywordstr”}}) < / p>