天蓝色搜索索引html内容

时间:2017-10-28 22:54:53

标签: azure azure-search

我知道blob存储是支持html内容索引的唯一数据源(到目前为止)。

我的问题是,是否可以使用自定义分析器和charfilter' html_strip'去除内容。 (在azure docs中提到)在通过REST将文档添加到索引之前?

这是我的创建索引有效负载:

    {
      "name": "htmlindex",  
      "fields": [
      {"name": "id", "type": "Edm.String", "key": true, "searchable": false},
      {"name": "title", "type": "Edm.String", "filterable": true, "sortable": true, "facetable": true},
      {"name": "html", "type": "Collection(Edm.String)", "analyzer": "htmlAnalyzer"}
      ],
      "analyzers": [
      {
        "name": "htmlAnalyzer",
        "@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer",
        "charFilters": [ "html_strip" ],
        "tokenizer": "standard_v2"
      }
      ]
    }

这是我索引有效负载的添加文档:

    {
      "value": [
        {
          "id": "1",
          "title": "title1",
          "html": [
            "<p>test1</p>",
            "<p>test2</p>"
          ]
        }
      ]
    }

现在,当我搜索索引时,我发现html内容没有被剥离:

    {
      "@odata.context": "https://deviqfy.search.windows.net/indexes('htmlindex')/$metadata#docs",
      "value": [
          {
              "@search.score": 1,
              "id": "1",
              "title": "title1",
              "html": [
                  "<p>test1</p>",
                  "<p>test2</p>"
              ]
          }
      ]
    }

我做错了什么?在添加之前,如何从内容中完成html的剥离?没有预先步骤..

1 个答案:

答案 0 :(得分:1)

因此,自定义分析器(以及相关的字符过滤器)是您在标记文本之前可以执行的可选步骤。这些分析仪可以帮助我们更好地进行全文搜索。

在使用REST API将文档推送到索引时,Azure搜索没有用于修改要编制索引的文档内容的机制。您必须自己这样做,因为分析器用​​于从存储在搜索索引中的文档中提取术语。

如果您有兴趣,请点击此处了解详情:https://docs.microsoft.com/en-us/azure/search/search-lucene-query-architecture