TBA*_*TBA 3 azure-cognitive-search azure-search-.net-sdk
我在索引中有以下数据,
{
"name" : "The 100",
"lists" : [
"2c8540ee-85df-4f1a-b35f-00124e1d3c4a;Bellamy",
"2c8540ee-85df-4f1a-b35f-00155c40f11c;Pike",
"2c8540ee-85df-4f1a-b35f-00155c02e581;Clark"
]
}
Run Code Online (Sandbox Code Playgroud)
我必须得到列表中有Pike的所有文档.
虽然完整的搜索查询适用于任何我无法得到包含工作.
$filter=lists/any(t: t eq '2c8540ee-85df-4f1a-b35f-00155c40f11c;Pike')
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何只用Pike搜索.
$filter=lists/any(t: t eq 'Pike')
我想eq寻找全文搜索,有没有任何方式使用给定的数据结构我应该使这个查询工作.
目前,字段列表没有可搜索的属性,只有可过滤的属性.
该eq运营商寻找确切的,区分大小写匹配.这就是它不匹配的原因'Pike'.您需要构建索引,以便可以轻松找到像"Pike"这样的术语.您可以通过以下两种方式之一完成此任务:
"2c8540ee-85df-4f1a-b35f-00155c40f11c;Pike"如果需要按位置关联它们,则可以将它们索引为同一个数组中的单独字符串,或者可能在两个不同的集合字段(一个用于GUID,一个用于名称)中索引.searchable,您可以在过滤器中使用新search.ismatch功能.假设该字段使用标准分析器,全文搜索将在分号上进行分词,因此您应该能够搜索"Pike"并获得匹配.语法如下所示:( $filter=search.ismatch('Pike', 'lists')如果查找"Pike"是您的所有过滤器,您只需使用search和searchFields参数搜索API而不是$filter.)如果"列表"字段尚不可搜索,则需要要么添加新字段并重新索引"列表"值,要么使用新字段定义从头开始重新创建索引.