Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lucene 具有特殊字符的认知搜索通配符搜索_Lucene_Full Text Search_Azure Cognitive Search_Full Text Indexing - Fatal编程技术网

Lucene 具有特殊字符的认知搜索通配符搜索

Lucene 具有特殊字符的认知搜索通配符搜索,lucene,full-text-search,azure-cognitive-search,full-text-indexing,Lucene,Full Text Search,Azure Cognitive Search,Full Text Indexing,我们使用认知搜索来满足搜索需求,我无法对具有特殊字符的字段进行通配符搜索 e、 例如,如果文档上的名称字段具有值-asdf,我可以使用搜索文本as*,并获取此文档 但是,如果此文档上此名称字段的值为!asdf,我无法使用通配符搜索它。我尝试使用术语进行搜索!作为*,\!作为*,和/\!作为*/。这只在我执行时有效!asdf 当字段中有特殊字符时,无法使通配符搜索工作。我使用的是查询类型full如果您查看完整Lucene模式的文档,您会发现感叹号(!)被视为特殊字符,必须用反斜杠转义 需要转义的

我们使用认知搜索来满足搜索需求,我无法对具有特殊字符的字段进行通配符搜索

e、 例如,如果文档上的名称字段具有值-
asdf
,我可以使用搜索文本
as*
,并获取此文档

但是,如果此文档上此名称字段的值为
!asdf
,我无法使用通配符搜索它。我尝试使用术语
进行搜索!作为*
\!作为*
,和
/\!作为*/
。这只在我执行
时有效!asdf


当字段中有特殊字符时,无法使通配符搜索工作。我使用的是查询类型
full

如果您查看完整Lucene模式的文档,您会发现感叹号(!)被视为特殊字符,必须用反斜杠转义

需要转义的特殊字符包括:+-&|!(){}[]^“~*?:\/

但是,如果您使用的话,这一点对任何属性都不起作用。您可以通过REST直接测试分析器。如果我们使用标准分析器分析字符串!asdf,我们会看到输出是asdf

如果要在索引中包含感叹号字符,则必须使用不带!-字符的分析器。有关为每个属性定义分析器的信息,请参阅

要找到合适的分析器,可以参考。在这里可以找到预配置分析器的列表。对于这种特殊情况,关键字分析器可以工作

将字段的整个内容视为单个标记。这非常有用 用于邮政编码、ID和某些产品名称等数据

我们可以上传两个测试项目进行测试。一个标题为“asdf”,另一个标题为“!asdf”

}

然后我们查询

\!as* 
(注意转义的!字符)并按预期在结果中获取1个文档:

    "@odata.count": 1,
    "value": [
    {
        "@search.score": 1.0,
        "Id": "2",
        "Title": "!asdf"
    }
\!as* 
    "@odata.count": 1,
    "value": [
    {
        "@search.score": 1.0,
        "Id": "2",
        "Title": "!asdf"
    }