elasticsearch 如何使elasticsearch多匹配模糊搜索始终返回最少数量的结果,elasticsearch,lucene,elasticsearch,Lucene" /> elasticsearch 如何使elasticsearch多匹配模糊搜索始终返回最少数量的结果,elasticsearch,lucene,elasticsearch,Lucene" />

elasticsearch 如何使elasticsearch多匹配模糊搜索始终返回最少数量的结果

elasticsearch 如何使elasticsearch多匹配模糊搜索始终返回最少数量的结果,elasticsearch,lucene,elasticsearch,Lucene,我今天刚刚投入Elasticsearch,我正试图用一个类似的Elasticsearch查询替换我现有的lucene.net实现模糊搜索 我正在使用Elasticsearch.Net ElasticLowLevel客户端 通过docker将其作为我的服务器运行 docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.4.

我今天刚刚投入Elasticsearch,我正试图用一个类似的Elasticsearch查询替换我现有的lucene.net实现模糊搜索

我正在使用Elasticsearch.Net ElasticLowLevel客户端

通过docker将其作为我的服务器运行

docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.4.0
我真的很接近了,我只是在返回低值结果时遇到了一些问题

我希望我的查询始终返回0分

例如,我有一个列值为tatra的文档

对“tat”的质疑

返回5个结果,但不返回tatra

对“tatr”的质疑

返回tatra结果

var node = new Uri("http://127.0.0.1:9200");
var config = new ConnectionConfiguration(node);
_client = new ElasticLowLevelClient(config);

var searchResponse = await _elasticsearchService._client.SearchAsync<StringResponse>(
    indexName,
    indexName,
    // https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-fuzzy-query.html
    PostData.Serializable(new
    {
        from = 0,
        size = maxReturnCount,
        min_score = 0.0,
        query = new
        {
            multi_match = new
            {
                fields = "*",
                type = "most_fields",
                query = string.Join(" ", queryParts),
                fuzziness = "AUTO",
                zero_terms_query = "all"
            }
        }
    })
);
var节点=新Uri(“http://127.0.0.1:9200");
var config=新连接配置(节点);
_客户端=新的ElasticLowLevel客户端(配置);
var searchResponse=await\u elasticsearchService.\u client.SearchAsync(
indexName,
indexName,
// https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-fuzzy-query.html
PostData.Serializable(新的
{
from=0,
大小=maxReturnCount,
最低分数=0.0,
查询=新建
{
多重匹配=新
{
字段=“*”,
type=“大多数字段”,
query=string.Join(“,queryParts),
fuzziness=“自动”,
zero\u terms\u query=“全部”
}
}
})
);
我以前在lucene中使用的查询与 “tat~”

根据,关于模糊性:自动

根据术语的长度生成编辑距离。低距离和高距离参数可以选择自动提供:[低],[高],如果未指定,默认值为3和6,相当于自动:3,6,表示长度:

0..2
必须完全匹配
3..5
允许一次编辑
>5
允许两次编辑

因此,如果您希望允许2次编辑,而不考虑术语的长度,请不要使用“自动”。使用fuzziness=2