2017-10-28 148 views
1

我知道Blob存储是唯一的数据源(迄今)支持的HTML内容的索引。天青搜索索引html内容

我的问题是,是否有可能使用自定义的分析器和charfilter“html_strip”(在天青文档提到的)将文档添加到通过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的剥离?如果没有前阶段..

回答

0

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

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

这里更多细节,如果你有兴趣:https://docs.microsoft.com/en-us/azure/search/search-lucene-query-architecture

+0

添加数据源与HTML文件被索引Blob存储容器能够从标记内容分开。这是如何实现的?如果这是不可能的。 –

+0

当您尝试从blob索引数据时,我们能够运行某些内容提取工具来去除HTML,或从办公文件,PDF等文件中读取文本。这是一个非破坏性的“预处理”步骤,因为您的实际斑点未被修改。当您使用REST API将数据推送到索引时,我们不修改实际文档,因为没有“原始”文档的概念。 说了这么多,你能不能请详细说明为什么使用Blob存储是不是一个适合您的选择?也许如果我更好地理解你的情况,我可以尝试找到可能的替代方案? –