目前我在用elasticsearch 进行一个知识管理系统的搭建,现在遇到一个问题,在进行知识搜索时会因为关键词堆叠导致结果不准确,请问如何优化查询。
例如我搜索:程序员如何快速处理故障。
由于elasticsearch数据中部分文章中存在很多类似如下内容(目前采用结巴分词搜索,导致程序员命中率过高):
示例文字:
程序员应该快速学习,程序员,程序员
程序员(英文Programmer)是从事程序开发、程序维护的基层工作人员。一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚。随着互联网的不断普及,网络上把男程序员称作“程序猿”,女程序员称作“程序媛”。
由于关键词“程序员”出现的频次过高,导致最终搜索的结果,更倾向于关键词“程序员”,而不是整句话,请问如何改进查询,实现真正的语义查询。有点类似搜索引擎的反关键词重复SEO。
搜索代码如下:
query = {
"size":Icount,
"query": {
"match": {
fieldName: {
"query":queryString,
# "cutoff_frequency": 0.015
"minimum_should_match": "98%"
},
},
},
}