如何仅在Azure搜索中的一个字符串中搜索?

时间:2018-02-04 10:08:06

标签: azure lucene azure-search

我的收集字段如下:

["city of god"]
["god of war", "city of war"]

我想在' city'并且'上帝'我只想要上帝的城市'被退回。

然而,无论条目在集合中的两个不同的字符串中,第二个字段也会返回。

无论如何要将搜索严格限制在字符串内而不是整个集合中?

1 个答案:

答案 0 :(得分:1)

索引中的每个可搜索字段都被视为一个术语包,因此对于“城市和上帝”,您将匹配整个文档中该字段的所有条款,而不仅仅是子文档中的术语(在此case集合中的单个字符串)。

解决此问题的一种方法是在集合的单个字符串中指定这些术语之间的距离的合理估计,并使用它来发出proximity search query以获得所需的结果。对于您的具体示例,假设术语彼此相差5个单词,以下查询应该起作用 -

                 &queryType=full&search=fieldName:"city god"~5

使用邻近搜索非常有用,因为它有助于单词不必在短语查询中提供的顺序具有足够大的邻近值,例如,“城市之神”~5也会匹配“上帝保佑城市”

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