我正在尝试执行全文搜索。在Elastic docs上,它显示“返回与提供的文本、数字、日期或布尔值匹配的文档。在匹配之前分析提供的文本。”但在我这边没有发生。
举个例子,让我们说我试图搜索“法拉利”。但当我搜索“费尔”没有出现。
var response = await _elasticClient.SearchAsync<Product>(x => x
.Size(10)
.Query(q => q
.Match(m => m
.Field(f => f.Title)
.Query("Ferr"))));
但是当我搜索“Ferrari”时,它就出现了,这对我来说毫无意义,因为这是词条查询应该做的,而不是匹配。
我可以使用通配符,但这通常不太有效。这是数据的外观
{
"_index": "product",
"_id": "33c9c3ab-0be8-4e70-83a2-1112fd528e65",
"_version": 1,
"_seq_no": 2,
"_primary_term": 1,
"found": true,
"_source": {
"id": "33c9c3ab-0be8-4e70-83a2-1112fd528e65",
"title": "Ferrari",
"description": "car",
"price": 500000,
"quantity": 100,
"timestamp": "0001-01-01T00:00:00+00:00"
}
}
1条答案
按热度按时间0yg35tkg1#
我以前也遇到过同样的问题,模糊查询可以用
Fuzziness.AutoLength
匹配。在您的场景中,如果您搜索
Ferrari
,Ferr
找不到任何东西,但是Ferrar
可能可以,所以我认为这是匹配准确性的问题。相关链接
模糊。自动长度用法