2017-10-28 272 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存儲是不是一個適合您的選擇?也許如果我更好地理解你的情況,我可以嘗試找到可能的替代方案? –