我知道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的剥离?没有预先步骤..
答案 0 :(得分:1)
因此,自定义分析器(以及相关的字符过滤器)是您在标记文本之前可以执行的可选步骤。这些分析仪可以帮助我们更好地进行全文搜索。
在使用REST API将文档推送到索引时,Azure搜索没有用于修改要编制索引的文档内容的机制。您必须自己这样做,因为分析器用于从存储在搜索索引中的文档中提取术语。
如果您有兴趣,请点击此处了解详情:https://docs.microsoft.com/en-us/azure/search/search-lucene-query-architecture