edismax支持boost函数与score相乘作为,而dismax只能使用bf作用效果是相加,所以在处理多个维度排序时,score其实也应该是其中一个维度 ,用相加的方式处理调整麻烦。而dismax的实现代码逻辑比较简单,看起来比较易理解,edismax是它的加强版,其实是改变了不少。。比如在以下:先看看dismax的解析主要实现思路:首先取出搜索字段名qf将最终解析成一个BooleanQuery先解析主mainQuery:
- 用户主要是搜索串的解析
- altQuery解析处理,看是否使用用户定义的后备搜索串
- PhraseQuery解析组装
再解析bq查询,主要是额外加分的查询,不会影响搜索结果数,只会影响排序再则是bf解析,函数搜索最后会以加的方式作用于文档评分看主要代码更清晰:
- @Override
- public Query parse() throws ParseException {
- SolrParams solrParams = SolrParams.wrapDefaults(localParams, params);
-
- queryFields = SolrPluginUtils.parseFieldBoosts(solrParams.getParams(DisMaxParams.QF));
- if (0 == queryFields.size()) {
- queryFields.put(req.getSchema().getDefaultSearchFieldName(), 1.0f);
- }
-
- /* the main query we will execute. we disable the coord because
- * this query is an artificial construct
- */
- BooleanQuery query = new BooleanQuery(true);
-
- boolean notBlank = addMainQuery(query, solrParams);
- if (!notBlank)
- return null;
- addBoostQuery(query, solrParams);
- addBoostFunctions(query, solrParams);
-
- return query;
- }
Yocto系统定制入门Google电话面试题目相关资讯 Solr Solr使用 Solr配置 Solr教程
- 全文搜索Apache Solr v6.0.1发布下 (05月31日)
- Solr5.3.0导入 Oracle 数据 (05月22日)
- CentOS 6.6 使用Tomcat6部署Solr5. (02月25日)
| - Solr6.0.0 + Tomcat8 配置问题 (05月28日)
- 在Tomcat上面安装Solr4.8.0全过程 (03月04日)
- Apache Solr 5.5.0 发布下载,全文 (02月24日)
|
本文评论 查看全部评论 (1)
评论声明- 尊重网上道德,遵守中华人民共和国的各项有关法律法规
- 承担一切因您的行为而
|