在Azure搜索中使用StartsWith搜索

时间:2018-12-03 04:03:19

标签: lucene azure-search

在这种情况下,我必须使用Azure搜索使用供应商名称来搜索供应商。例如,下面是供应商列表。

  1. Infosys Technologies Limited
  2. Infosys BPM Limited
  3. Infor解决方案
  4. Infosys企业技术
  5. 戴尔计算机
  6. 第一信息系统

我的搜索场景是

  1. 当Searchtext为信息时,它应返回1,2,3,4
  2. 当Searchtext为 Infosys 时,它应返回1,2,4
  3. 当Searchtext是 Infosys Tech 时,它应该只返回1而不是4

我还在供应商名称字段上尝试了关键字分析器,但它也没有给出我期望的结果。基本上,我希望searchtext从供应商名称字段的开头(startswith)开始搜索,而不是从供应商名称的每个单词(Standard.Lucene Analyzer在每个单词上搜索)单独搜索。

在这种情况下,请问您能如何帮助我查询框架?

2 个答案:

答案 0 :(得分:0)

从Nate Ko的答案here

  

您似乎想对整个域名发出前缀搜索查询   字段值不在字段中的各个术语上。在这种情况下   您需要使用关键字分析器,以便整个字段值为   标记化为单个标记。例如,假设“ 16th Ave SE”为   输入,默认情况下,Azure搜索使用标准分析器并标记化   输入为多个术​​语,如<16th>,和前缀   搜索根据标记化的术语进行。如果您使用关键字   而不是分析器,将整个字段值标记为单个   标记为<16th ave se>并且前缀搜索search = 16th *只会找到   带有以前缀开头的字段的文档。同样,   通过正则表达式搜索后缀搜索= /。* ave /将仅查找具有字段的文档   以后缀结尾。以下是有关的相关问题   stackoverflow。

     

http://stackoverflow.com/questions/40056213/behavior-of-asterisk-in-azure-search-service/40137948#40137948

     

http://stackoverflow.com/questions/40857057/how-to-practially-use-a-keywordanalyzer-in-azure-search

答案 1 :(得分:-1)

Simple query syntaxLucene query syntax都支持前缀搜索查询(例如“ prefix *”),并查找包含以前缀查询开头的术语的文档。

因此,您可以尝试使用search=info*"&searchmode=allsearch=infosys tech*&searchmode=all之类的方法,它应该可以工作。

如果您想要更高级的正则表达式(例如搜索),可以参考Regular expression search

相关问题