需要Azure Search Lucene查询来搜索具有以下场景的记录

需要Azure Search Lucene查询来搜索具有以下场景的记录,azure,lucene,full-text-search,lucene.net,azure-cognitive-search,Azure,Lucene,Full Text Search,Lucene.net,Azure Cognitive Search,我有Azure搜索索引,其中列为ProductName 我必须根据用户的搜索方式显示产品名称。所以,如果我想在单词之间搜索,我该如何形成查询呢 ProductName Microsoft Visual Studio 32位 Microsoft Visual Basic编辑器 Microsoft SQL Server SQL Server管理工作室 Visual Studio代码 我的要求是— 如果用户搜索“SQL”,则用户应获得如下结果 SQL Server管理工作室 Microsoft SQL

我有Azure搜索索引,其中列为ProductName

我必须根据用户的搜索方式显示产品名称。所以,如果我想在单词之间搜索,我该如何形成查询呢

ProductName

  • Microsoft Visual Studio 32位
  • Microsoft Visual Basic编辑器
  • Microsoft SQL Server
  • SQL Server管理工作室
  • Visual Studio代码
  • 我的要求是—

    如果用户搜索“SQL”,则用户应获得如下结果

  • SQL Server管理工作室
  • Microsoft SQL Server
  • 解决方案-

    在这种情况下,我将我的Azure搜索索引称为,它可以工作

    ==============================================

    第二种情况-如果用户搜索“Microsoft Vis” 用户应该得到两个结果

  • Microsoft Visual Studio 32位
  • Microsoft Visual Basic编辑器
  • 我怎样才能得到这个结果? 如何创建查询。我已经在搜索我的第一个场景,但是对于我的第二个场景,我被卡住了。请帮忙

    如果我像这样搜索 *&searchMode=all&%24select=productName

    ==============================================================

    第三种情况-如果用户搜索“软”,我需要显示这些结果

  • Microsoft Visual Studio 32位
  • Microsoft Visual Basic编辑器
  • Microsoft SQL Server

  • 在搜索“SQL”时,您可以尝试调用以下请求url

    或在搜索“Microsoft Vis”时调用此请求url

    如果键入“Microsoft Visual B”,则可以调用以下api:

    https://myindex.search.windows.net/indexes/myproducts/docs?api-version=2017-11-11&search=Microsoft%20Visual%20B*&searchMode=all&%24select=productName
    

    Azure Search将文本索引为称为“标记”的片段时,会将其打断,这相当于您可以搜索的最小文本段。根据为字段选择的分析器,索引字可能会产生多个标记

    您应该只需要在查找以文本开头的标记时提供通配符。这与索引中完整字符串的开头不同。在您的示例中,“SQL”不需要通配符。“Vis*”需要通配符,因为您正在查找“visual”

    如果您还有其他问题,请告诉我

    迈克·卡特
    Azure搜索产品团队

    谢谢@Andy-我知道了。但是如果我用“MicrosoftVisualB”搜索,那么我也会得到两个产品名称。理想情况下,它应该只返回一个,即Microsoft Visual Basic编辑器。您得到的另一个产品名是什么?如果我键入“Microsoft Visual B”并调用搜索api,我得到的产品仍然是Microsoft Visual Studio 32位和Microsoft Visual Basic编辑器。您可能忘记了在“Microsoft Visual B”的末尾附加*号。您只需将搜索url参数值更改为Microsoft%20Visual%20B*-如果我这样搜索
    https://myindex.search.windows.net/indexes/myproducts/docs?api-version=2017-11-11&search=SQL*&querytype=full&searchmode=all
    它返回以下结果
    “值”:[{@search.score:1,“ID”:“46”,“名称”:“Microsoft SQL Server”},{“@search.score”:1,“ID”:“47”,“名称”:“SQL Server Management Studio”},{“@search.score”:1,“ID”:“51”,“名称”:“Microsoft SQL 32\\64”}]
    感谢您的评论。我这里有两个要求。如果用户搜索“软”,我需要显示这些结果1.MicrosoftVisualStudio32位,2。Microsoft Visual Basic Editor,3.Microsoft SQL Server如果用户搜索“Microsoft Vis”,则它应按问题中描述的每秒场景显示。因此,我像
    https://myindex.search.windows.net/indexes/myproducts/docs?api-version=2017-11-11&search=Microsoft vis\*| |/.*Microsoft vis.*/&queryType=full&searchMode=all
    简而言之,我将searchTerm作为一个变量,并调用搜索api。
    https://myindex.search.windows.net/indexes/myproducts/docs?api-version=2017-11-11&search=Microsoft%20Vis*&searchMode=all&%24select=productName
    
    https://myindex.search.windows.net/indexes/myproducts/docs?api-version=2017-11-11&search=Microsoft%20Visual%20B*&searchMode=all&%24select=productName