我的索引中有以下数据,
{
"name" : "The 100",
"lists" : [
"2c8540ee-85df-4f1a-b35f-00124e1d3c4a;Bellamy",
"2c8540ee-85df-4f1a-b35f-00155c40f11c;Pike",
"2c8540ee-85df-4f1a-b35f-00155c02e581;Clark"
]
}
我必须得到列表中有Pike的所有文件。
虽然完整搜索查询适用于任何我无法获得包含工作。
$filter=lists/any(t: t eq '2c8540ee-85df-4f1a-b35f-00155c40f11c;Pike')
但是我不确定如何仅使用Pike进行搜索。
$filter=lists/any(t: t eq 'Pike')
我想eq会查找全文搜索,有没有办法使用给定的数据结构我应该让这个查询工作。
目前,字段列表中没有可搜索的属性,只有可过滤的属性。
答案 0 :(得分:5)
eq
运算符查找完全区分大小写的匹配项。这就是它与'Pike'
不匹配的原因。您需要构建索引,以便可以轻松找到像“Pike”这样的术语。您可以通过以下两种方式之一完成此任务:
"2c8540ee-85df-4f1a-b35f-00155c40f11c;Pike"
索引为单个字符串,而是可以将它们索引为同一数组中的单独字符串,或者可能在两个不同的集合字段(一个用于GUID,一个用于名称)中,如果需要按位置关联它们searchable
,则可以使用过滤器中的new search.ismatch
function。假设该字段使用的是标准分析器,则分号上的全文搜索将word-break,因此您应该只能搜索“Pike”并获得匹配。语法如下所示:$filter=search.ismatch('Pike', 'lists')
(如果您的过滤器都在查找“Pike”,则可以将search
和searchFields
参数用于Search API,而不是{{ 1)}。)如果“列表”字段尚不可搜索,则需要添加新字段并重新索引“列表”值,或者使用新字段定义从头开始重新创建索引。 / LI>
醇>