如何在Azure search中仅在集合的一个字符串内搜索?

如何在Azure search中仅在集合的一个字符串内搜索?,azure,lucene,azure-cognitive-search,Azure,Lucene,Azure Cognitive Search,我有一个集合字段,如: ["city of god"] ["god of war", "city of war"] 我想用“城市”和“上帝”在现场进行搜索,我只想返回“上帝之城” 然而,第二个字段也是return,不管集合中的两个不同字符串中的术语是什么 无论如何,要使搜索严格到字符串内而不是整个集合?索引中的每个可搜索字段都被视为一个术语包,因此对于“city and god”,您要匹配整个文档中该字段的所有术语,而不仅仅是子文档中的术语(在本例中是集合中的单个字符串) 解决这个问题的一种方

我有一个集合字段,如:

["city of god"]
["god of war", "city of war"]
我想用“城市”和“上帝”在现场进行搜索,我只想返回“上帝之城”

然而,第二个字段也是return,不管集合中的两个不同字符串中的术语是什么


无论如何,要使搜索严格到字符串内而不是整个集合?

索引中的每个可搜索字段都被视为一个术语包,因此对于“city and god”,您要匹配整个文档中该字段的所有术语,而不仅仅是子文档中的术语(在本例中是集合中的单个字符串)

解决这个问题的一种方法是在集合的单个字符串中指定这些术语之间的距离的合理估计,并使用该估计值发出一个命令以获得所需的结果。对于您的特定示例,假设术语之间的距离不超过5个单词,则以下查询应该可以工作-

                 &queryType=full&search=fieldName:"city god"~5
使用邻近搜索非常有用,因为它有助于单词不必在短语查询中以提供的顺序排列,并且具有足够大的邻近值,例如,“城隍”~5也可以匹配“上帝保佑城市”


确保在查询字符串中包含
queryType=full
,因为邻近搜索是完整查询语法的一部分,否则将无法工作。您可以查看其他一些示例。

不,不会。短语查询和邻近查询不支持通配符。