elasticsearch 如何从带有通配符的Elasticsearch查询字符串中找到真实分数?,elasticsearch,nest,elasticsearch,Nest" /> elasticsearch 如何从带有通配符的Elasticsearch查询字符串中找到真实分数?,elasticsearch,nest,elasticsearch,Nest" />

elasticsearch 如何从带有通配符的Elasticsearch查询字符串中找到真实分数?

elasticsearch 如何从带有通配符的Elasticsearch查询字符串中找到真实分数?,elasticsearch,nest,elasticsearch,Nest,My ElasticSearch 2.x嵌套查询字符串搜索包含通配符: 在C#中使用嵌套: var results=\u client.Search(s=>s .索引(索引.所有索引) .AllTypes() .Query(qs=>qs .QueryString(qsq=>qsq.Query(“Micro*”)) .发件人(页码) .Size(pageSize)); 提出了这样的想法: $ curl -XGET 'http://localhost:9200/_all/_search?q=Mic

My ElasticSearch 2.x嵌套查询字符串搜索包含通配符:

在C#中使用嵌套:

var results=\u client.Search(s=>s
.索引(索引.所有索引)
.AllTypes()
.Query(qs=>qs
.QueryString(qsq=>qsq.Query(“Micro*”))
.发件人(页码)
.Size(pageSize));
提出了这样的想法:

$ curl -XGET 'http://localhost:9200/_all/_search?q=Micro*'
此代码源于。结果是共变异的;它们是来自多个指数的混合类型。我遇到的问题是所有的命中率都是1分


这与类型或增压无关。我可以按类型进行增强吗?或者,是否有办法显示或“解释”搜索结果,以便我可以按分数排序?

通配符搜索将始终返回1分。 你可以通过一种特殊的方式来提升。见此: 默认情况下,会得到一个等于助推的恒定分数。您可以使用
.Rewrite()
更改此行为

var results=client.Search(s=>s
.索引(索引.所有索引)
.AllTypes()
.Query(qs=>qs
.QueryString(qsq=>qsq
.Query(“Micro*”)
.Rewrite(RewriteMultiTerm.ScoringBoolean)
)
)
.发件人(页码)
.Size(页面大小)
);
使用
RewriteMultiTerm.ScoringBoolean
,重写方法首先将每个术语转换为
bool
查询中的
should
子句,并保留查询计算的分数

请注意,这可能是CPU密集型的,默认限制为1024个
bool
query子句,对于大型文档语料库,这些子句很容易命中;例如,在完整的StackOverflow数据集(问题、答案和用户)上运行查询会达到问题的子句限制。您可能需要使用使用的分析器分析某些文本