【问题标题】:How can I use AzureSearch with wildcard如何将 AzureSearch 与通配符一起使用
【发布时间】:2018-05-15 10:54:50
【问题描述】:

我想搜索名称为“14009-00080300”的字段,并且希望在仅搜索其中的一部分时获得成功,例如“14009-000803”。

使用此代码我没有得到任何点击:

   {
 "search": "\"14009-000803\"*",
 "count":true,
 "top":10
}

有没有办法像 SQL 使用通配符搜索一样使用天蓝色搜索? (select * from table where col like '%abc%' ?

【问题讨论】:

    标签: azure azure-cognitive-search


    【解决方案1】:

    您可以通过使用 Lucene 语法(如 Sumanth BM 所述)执行完整查询来获得所需的结果。诀窍是进行正则表达式搜索。像这样修改您的查询参数:

    {
     "queryType": "full",
     "search": "/.*searchterm.*/",
     "count":true,
     "top":10
    }
    

    将“searchterm”替换为您要查找的内容,Azure 搜索应返回索引可搜索列中的所有匹配项。

    见文档部分:MS Docs on Lucene regular expression search

    【讨论】:

      【解决方案2】:

      您可以使用公认的语法进行多个 () 或单个 (?) 字符通配符搜索。请注意,Lucene 查询解析器支持将这些符号用于单个术语,而不是短语。 例如,要查找包含前缀为“note”的单词的文档,例如“notebook”或“notepad”,请指定“note”。

      注意 您不能使用 * 或 ?符号作为搜索的第一个字符。 不对通配符搜索查询执行文本分析。在查询时,通配符查询词会与搜索索引中的分析词进行比较并展开。

      SearchMode 参数注意事项 如 Azure 搜索中的简单查询语法中所述,searchMode 对查询的影响同样适用于 Lucene 查询语法。也就是说,如果您不清楚如何设置参数的含义,则 searchMode 与 NOT 运算符一起可能会导致查询结果看起来不寻常。如果您保留默认值 searchMode=any 并使用 NOT 运算符,则该运算将计算为 OR 操作,这样“纽约”而不是“西雅图”会返回所有非西雅图的城市。

      https://docs.microsoft.com/en-us/rest/api/searchservice/simple-query-syntax-in-azure-search

      参考:https://docs.microsoft.com/en-us/rest/api/searchservice/lucene-query-syntax-in-azure-search#bkmk_wildcard

      【讨论】:

        猜你喜欢
        • 2023-03-29
        • 2012-02-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-15
        • 2014-09-20
        • 2016-11-08
        • 2017-12-11
        相关资源
        最近更新 更多