.net 在球场上中和比分
是否可以创建一个所有结果得分相同的searchQuery? 例子: 我想搜索一些文档类型,并且我希望文档类型上的匹配不会对分数产生任何影响 (nodeTypeAlias:newsItem nodeTypeAlias:activity) 此查询提供了所有将newsItem或activity作为nodeTypeAlias的项,但问题是activity项的得分为27581,newsItem项的得分为01061。这为活动项提供了一个起始点,这是不需要的 Ived尝试使用lucene.net使用0进行增强,但当传递给QueryParser时,它会将其转换为^.0,lucene会在此类查询中中断.net 在球场上中和比分,.net,lucene,lucene.net,.net,Lucene,Lucene.net,是否可以创建一个所有结果得分相同的searchQuery? 例子: 我想搜索一些文档类型,并且我希望文档类型上的匹配不会对分数产生任何影响 (nodeTypeAlias:newsItem nodeTypeAlias:activity) 此查询提供了所有将newsItem或activity作为nodeTypeAlias的项,但问题是activity项的得分为27581,newsItem项的得分为01061。这为活动项提供了一个起始点,这是不需要的 Ived尝试使用lucene.net使用0进行增强
所以问题是:我如何才能让字段搜索不影响分数,但其他字段应该(这些字段我实际上是使用searchQuery搜索的)。将查询或子查询包装为一个,如:
在3.1之前的版本中,
ConstantCoreQuery
只能与过滤器一起使用,而不能与查询一起使用。你可以用几种方法来做
将查询包装为:
有趣的事实:仍然有代码支持/优化此模式,在源代码中指出:
修复Lucene 2.x/early-3.x中过时的使用模式:因为ConstantCoreQuery只接受过滤器,所以使用QueryRapperFilter包装查询
使用:
好像是我要找的。尽管如此,我在2.9.4 lucene.net上,当我使用ConstantCoreQuery时,我只能给它一个过滤器,这我不知道。有什么提示吗?当我在luke中执行这个查询ConstantCore(QueryRapperFilter(nodeTypeAlias:activity nodeTypeAlias:workgroup))时,我在nodeTypeAlias上得到了两个不同的分数。我是在Umbraco中构建的,所以我使用一个框架来与Lucene一起工作,但据我所知,我应该能够像使用API一样处理查询字符串,但结果并不像预期的那样。有什么想法吗?
Query constantQuery = new ConstantScoreQuery(nodeTypeAliasBQ);
booleanQuery.add(new BooleanClause(constantQuery, BooleanClause.Occur.MUST));
booleanQuery.add(new BooleanClause(someOtherQuery, BooleanClause.Occur.SHOULD));
Query constantQuery = new ConstantScoreQuery(new QueryWrapperFilter(nodeTypeBQ))
Filter nodeTypeFilter = new TermsFilter();
nodeTypeFilter.addTerm(new Term("nodeTypeAlias","newsItem"));
nodeTypeFilter.addTerm(new Term("nodeTypeAlias","activity"));
Query constantQuery = new ConstantScoreQuery(nodeTypeFilter)