如何在Azure搜索中查询URL

时间:2019-03-19 12:45:46

标签: azure-search

我在天蓝色搜索中存储了以下文件的文档,然后所有文件都可以搜索。

根据正式文档search document,我尝试通过带有内容关键字的URL查询酒店,但失败。

POST /indexes/hotels/docs/search?api-version=2017-11-11  
{  
  "search": "url:example.com AND hotel",  
  "searchMode": "all"  
}   

更新

我尝试使用标准令牌生成器,并将域名 blog.xuite.net 成功解析器用作令牌。

 "tokens": [
    {
        "token": "https",
        "startOffset": 0,
        "endOffset": 5,
        "position": 0
    },
    {
        "token": "blog.xuite.net",
        "startOffset": 8,
        "endOffset": 22,
        "position": 1
    },
    {
        "token": "yundestiny",
        "startOffset": 23,
        "endOffset": 33,
        "position": 2
    },
    {
        "token": "20050916",
        "startOffset": 34,
        "endOffset": 42,
        "position": 3
    },
 ]

我为什么可以通过 url:blog.xuite.net 搜索?

2 个答案:

答案 0 :(得分:0)

您可能要尝试的一件事是将custom analyzer应用于包含此内容的字段。实际上,我认为uax_url_email标记生成器将适合您的情况,但是另一个选择是创建一个分析器,使用字符过滤器对//和/等字符进行标记。

答案 1 :(得分:0)

最后,我发现通过tokenizer = standard_v2和tokenFilters使用 CustomAnalyzer = LimitTokenFilter。以下是我的索引设置。

 "analyzers": [
    {
        "@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer",
        "name": "domain_analyzer",
        "tokenizer": "standard_v2",
        "tokenFilters": [
            "my_limit"
        ],
        "charFilters": []
    }
],
"tokenizers": [],
"tokenFilters": [
    {
        "@odata.type": "#Microsoft.Azure.Search.LimitTokenFilter",
        "name": "my_limit",
        "maxTokenCount": 2,
        "consumeAllTokens": false
    }
],

使用此CustomAnalyzer,例如 url 字段

https://example.com/test.html 

将仅作为 example.com 编制索引。

所以我可以通过search = url:(example.com)和{关键字}

进行搜索