使用下划线搜索条件不会返回预期结果

时间:2017-04-27 14:50:44

标签: azure azure-search

如何搜索名为" Hola-Mundo_Army.jpg"的文件?按陆军*字搜索(请在最后使用星号键)?问题是,如果我使用Army *搜索文档,结果为零。我认为问题是军队之前的下划线。

但如果我搜索Mundo_Army *,结果是找到的,正确的。

docs?api-version=2016-09-01&search=Mundo_Army*< --- 1结果OK docs?api-version=2016-09-01&search=Army*< --- 0结果,它应该找到1个结果,就像之前的搜索一样。我总是需要在最后使用星号。

谢谢!

这是我必须搜索和查找的blob信息:

{
            "@search.score": 1,
            "content": "{\"azure_cdn\":\"http:\\/\\/dev-dr-documents.azureedge.net\\/localhost-hugo-docs-not-indexed\\/Hola-Mundo_Army.jpg\"}\n",
            "source": "dr",
            "title": "Hola-Mundo_Army.jpg",
            "file_name": "Hola-Mundo_Army.jpg",
            "file_type": "Image",
            "year_created": "2017",
            "client": "LALALA",
            "brand": "LELELE",
            "description": "HUGO_DEV-TUCUMAN",
            "categories": "Clothing and Accessories",
            "media": "Online media",
            "tags": null,
            "channel": "Case Study",
            "azuresearch_skipcontent": "1",
            "id": "1683",
            "metadata_storage_content_type": "application/octet-stream",
            "metadata_storage_size": 109,
            "metadata_storage_last_modified": "2017-04-26T18:30:35Z",
            "metadata_storage_content_md5": "o2yZWelvS/EAukoOhCuuKg==",
            "metadata_storage_name": "Hola-Mundo_Army.json",
            "metadata_content_encoding": "ISO-8859-1",
            "metadata_content_type": "text/plain; charset=ISO-8859-1",
            "metadata_language": "en"
        }

1 个答案:

答案 0 :(得分:1)

解决此类案件的最佳方法是使用Analyze API。它将帮助您了解搜索引擎如何处理您的文档和查询字词。在您的情况下,假设您没有在要搜索的字段上设置分析器属性,默认分析器将文本 Hola-Mundo_Army.jpg 分解为以下两个术语: hola,mundo_army.jpg。这些是索引中的术语。这就是为什么当您搜索前缀 mundo_army * 时,术语 mundo_army.jpg 是匹配的。前缀 army * 与索引中的任何内容都不匹配。

您可以在本文中详细了解搜索引擎的默认行为以及如何对其进行自定义:How full text search works in Azure Search