转义特殊字符&;编码不安全和保留字符Lucene查询语法Azure搜索

转义特殊字符&;编码不安全和保留字符Lucene查询语法Azure搜索,lucene,azure-cognitive-search,Lucene,Azure Cognitive Search,我在azure search的索引中有“C&&K”、“So`am`I”、“Ant | Man”、“A*B==AB”、“Ant+Man”等词 根据,用于转义特殊字符+-&&&| |!(){}[]^“~*?:\/我需要在它们前面加上反斜杠(\),对于不安全和保留字符,需要在URL中对它们进行编码 对于“C&&K”,我的搜索url=>/index/{index name}/docs?api版本=2017-11-11&search=C%5C%26%5C%26K~&queryType=full 对于“So

我在azure search的
索引中有“C&&K”、“So`am`I”、“Ant | Man”、“A*B==AB”、“Ant+Man”等词

根据,用于转义特殊字符
+-&&&| |!(){}[]^“~*?:\/
我需要在它们前面加上反斜杠(\),对于不安全和保留字符,需要在URL中对它们进行编码

对于“C&&K”,我的搜索url=>
/index/{index name}/docs?api版本=2017-11-11&search=C%5C%26%5C%26K~&queryType=full

对于“So`am`I”我的搜索url=>
/index/{index name}/docs?api version=2017-11-11&search=So%5C%60am%5C%60I~&queryType=full

对于“蚂蚁人”,我的搜索url=>
/index/{index name}/docs?api版本=2017-11-11&search=A%5C*B%3D%3DAB~&queryType=full

对于“A*B==AB”,我的搜索url=>
/index/{index name}/docs?api版本=2017-11-11&search=A%5C*B%3D%3DAB~&queryType=full

对于“Ant+Man”,我的搜索url=>
/index/{index name}/docs?api版本=2017-11-11&search=Ant%5C%2BMan~&queryType=full

对于所有这些,我没有得到搜索结果。我得到的是
“值”:[]

对于“C&&K”,我也尝试过

url=>
/index/{index name}/docs?api版本=2017-11-11&search=C%5C%26%26K~&queryType=full

url=>
/index/{index name}/docs?api版本=2017-11-11&search=C%26%5C%26K~&queryType=full

对于“我也是如此”我也试过了

url=>
/index/{index name}/docs?api版本=2017-11-11&search=So%60am%60I~&queryType=full


它不起作用。我做错了什么?

使用标准分析,所有这些都将作为多个术语进行索引。但是,模糊查询不会进行分析,因此它会尝试将其作为单个术语进行查找。也就是说,当您为“Ant | Man”编制索引时,经过分析后,您将得到术语“Ant”和“Man”“在索引中。当您搜索
Ant | | Man
时,它将以与索引时大致相同的方式对其进行分析,但当搜索
Ant | | Man
时,将不会分析查询,并且由于索引中不存在类似的术语,因此您将不会获得任何匹配项。类似地,对于“A*B==AB”,您可以得到术语“B”和“AB”(“A”是带有默认分析的停止词)


因此,使用标准分析尝试不使用
~
的查询,所有这些都将作为多个术语索引。然而,模糊查询并没有被分析,所以它将尝试将其作为一个术语来查找。也就是说,当你为“蚂蚁|人”编制索引时,经过分析后,你会在索引中找到“蚂蚁”和“人”这两个词。当您搜索
Ant | | Man
时,它将以与索引时大致相同的方式对其进行分析,但当搜索
Ant | | Man
时,将不会分析查询,并且由于索引中不存在类似的术语,因此您将不会获得任何匹配项。类似地,对于“A*B==AB”,您可以得到术语“B”和“AB”(“A”是带有默认分析的停止词)


这样,在不使用<代码> ~ .< /P> < P>的情况下,除了FEMTOGON的响应之外,您还可以考虑使用一个自定义分析器,这些索引不将这些索引称为多个术语,如果您总是希望它们是可搜索的。在这里,你可以使用测试来确保给定的分析器按照你的预期工作。

除了FEMTOGORY的响应之外,你还可以考虑使用一个自定义分析器,如果你总是希望它们是可搜索的,则不将它们作为多个术语来索引。有,您可以使用测试来确保给定的分析器按预期工作