0
我使用弹性搜索新闻文章搜索。如果我搜索“Vlamadir Putin”,那么它很有用,因为他有很多新闻,Vlamidir和Putin都不是很受欢迎。但是,如果我搜索“拉贾拉姆”,它不起作用。我有一些“Raja Ram”的文章,但是有一些是“Raja Mohanty”和“Ram Srivastava”。这些文章的排名高于引用“Raja Ram”的文章。我的分词器或搜索功能有问题吗?ElasticSearch更多重量到精确匹配
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"]}}})
它工作正常, 。对于“A B C”的搜索,如果“A B C”存在,那应该是很棒的,否则,搜索索引应该比“A”或“B”更加重视“A B”和“B C”。我怎样才能做到这一点? –
使用查询字符串和AND运算符的A B c的第一个查询。这会给你所有三个可能的结果。 1. A B C的匹配词,2. A和B或B以及C或C以及A. 3. A或B或C.从这些结果中,您可以筛选出每个结果并相应地提升它们。 – harsha
太乱了,如果我们正在处理10个单词:( –