如何在天蓝色搜索中搜索特殊字符和带有特殊字符的单词?

How to search special characters and words with special characters in azure search?

我正在使用带有标准分析器的 azure 搜索。我在搜索时遇到了这个问题。

我的索引中有类似“abc@sakiladb.com”的文本。

  1. 如果我尝试只搜索 @,没有结果。

  2. 如果我尝试使用这个词的一半后跟 * 进行搜索,没有结果。

  3. 如果我尝试使用转义和编码进行搜索,上述两种情况都不起作用。

有什么方法可以搜索这些字符串吗?

看起来这可能与标准分析器有关。 如果将分析 API https://docs.microsoft.com/en-us/rest/api/searchservice/test-analyzer 与标准分析器一起使用,您将看到它仅标记化“abc”和“sakiladb.com”,如下所示。

    "tokens": [
        {
            "token": "abc",
            "startOffset": 0,
            "endOffset": 3,
            "position": 0
        },
        {
            "token": "sakiladb.com",
            "startOffset": 4,
            "endOffset": 16,
            "position": 1
        }
    ]
}

虽然使用“en.microsoft”分析器,标记化发生不同,它为整个“abc@sakiladb.com”创建一个标记,现在应该 return 你想要的结果你的搜索。 所有这些都由文档支持,因为这里提到标准分析器将忽略大多数特殊字符 https://docs.microsoft.com/en-us/azure/search/query-simple-syntax#special-characters

"tokens": [
        {
            "token": "abc@sakiladb.com",
            "startOffset": 0,
            "endOffset": 16,
            "position": 0
        },
        {
            "token": "abc",
            "startOffset": 0,
            "endOffset": 3,
            "position": 0
        },
        {
            "token": "sakiladb",
            "startOffset": 4,
            "endOffset": 12,
            "position": 1
        },
        {
            "token": "com",
            "startOffset": 13,
            "endOffset": 16,
            "position": 2
        }
    ]
}