在 Alfresco FTS 中使用特殊字符完全匹配

问题描述

我正在尝试使用 API 在 Alfresco 5.2.7 中以 Alfresco FTS 语言执行查询,以突出显示一些结果。只要我没有特殊字符,一切都很好。当我尝试执行查询搜索(完全匹配)“名称?”一词时,问题就出现了。我无法逃避问号,以便能够强制查询与整个单词一起搜索问号。突出显示数组中的结果始终没有特殊字符。 这是我的功能查询

  {
  "query": {
    "language": "afts","query": "(content:\"content\") AND TYPE:\"cm:content\""
  },"paging": {
    "maxItems": 100,"skipCount": 0
  },"scope": {
    "locations": "nodes"
  },"highlight": {
    "snippetCount":10,"mergeContiguous": true,"fields": [
          {
              "field": "cm:content"
          }

     ]

  }

}

这就是结果:注意突出显示的单词在 标签之间。

{
  "list": {
    "pagination": {
      "count": 1,"hasMoreItems": false,"totalItems": 1,"skipCount": 0,"maxItems": 100
    },"context": {},"entries": [
      {
        "entry": {
          "isFile": true,"createdByUser": {
            "id": "admin","displayName": "Administrator"
          },"modifiedAt": "2021-01-15T15:29:03.275+0000","nodeType": "miims:contenytrOPI","content": {
            "mimeType": "text/html","mimeTypeName": "HTML","sizeInBytes": 489,"encoding": "UTF-8"
          },"parentId": "8b7c5c54-293b-4c95-a850-824efd402667","createdAt": "2020-12-22T08:12:12.369+0000","isFolder": false,"search": {
            "score": 0.21531886,"highlight": [
              {
                "field": "cm:content","snippets": [
                  "\n\n\n2??3pppusa\n2 <em>content</em>?"
                ]
              }
            ]
          },"modifiedByUser": {
            "id": "admin","name": "nodeName","location": "nodes","id": "b7811537-b3af-47bf-9f9c-c4bfaa43832a"
        }
      }
    ]
  }
}

问题很简单:如何强制 FTS 忽略像“?”这样的特殊字符或“*”并以字面方式搜索这些字符?我试过?要么 /?在查询中,没有结果。

解决方法

通过反斜杠转义特殊字符,这应该非常简单。

https://docs.alfresco.com/4.2/concepts/rm-searchsyntax-escaping.html https://lucene.apache.org/core/4_0_0/queryparser/org/apache/lucene/queryparser/classic/package-summary.html#Escaping_Special_Characters