我是弹性搜索的新手。我正在尝试修复搜索,以便用户可以搜索html标记内的内容。目前,我们正在使用空格标记器,因为我们需要它来返回带连字符的名称的结果。因此,aname123-suffix project
被编入索引为["aname123-suffix", "project"]
,用户搜索"aname123-*"
会返回正确的结果。
我的问题出现了,因为我们也希望能够在html标签内搜索内容。因此,例如,对于名为<aname123>-suffix project
的项目,我们希望能够输入搜索字词<aname123>-*
并获得正确的结果。
索引具有空格标记器的正确标记,即["<aname123>-suffix", "project"]
,但当我的搜索字符串为"\<aname123\>\-suffix"
或"\\<aname123\\>\\-suffix"
时,弹性搜索不会返回任何结果。
我认为解决方案在于
<aname123>-suffix
;或["<aname123>-suffix", "project", "aname123", "suffix"]
到目前为止,我一直在通过更改索引来接近它,但我还没有成功。标准标记生成器将允许标记内容的搜索结果,但无法返回aname123-*
的搜索结果。目前,我的分析仪设置如下所示:
{ "analysis":
{ "analyzer":
{ "my_whitespace_analyzer" :
{"type": "custom"
{"tokenizer": "whitespace},
{"filter": ["standard", "lowercase", "stop"]}
}
},
{ "my_tag_analyzer":
{"type": "custom"
{"tokenizer": "standard"},
{"filter": ["standard", "lowercase", "stop"]}
}
}
}
}
我可以创建一个自定义字符过滤器来去掉&lt;和&gt;,所以我的索引包含aname123
;但由于某些原因,在<aname123>*
上搜索时,弹性搜索仍然无法返回正确的结果。但是,当我使用标准分析器时,索引包含aname123
和,它返回<aname123>*
的预期结果...弹性搜索中尖括号有什么特别之处?
答案 0 :(得分:0)
您可能需要查看html_strip字符过滤器:
https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-htmlstrip-charfilter.html
来自其中一位弹性搜索开发人员的例子是: