如何在使用ElasticSearch进行搜索时忽略URL



嗨,我有一组文档,其中可能包含一些文本,但其中可能包含URL:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam tincidunt metus a convallis imperdiet. Praesent interdum magna ut lorem bibendum vehicula. Maecenas consectetur tortor a ex pulvinar, sit amet sollicitudin nunc maximus. Pellentesque non gravida ligula, imperdiet pharetra odio. Nunc non massa vitae mauris tempor tempus. Nulla ac laoreet tellus. Nulla consequat tortor eu eros euismod bibendum. Curabitur ante ligula, aliquet at lacus at, pretium convallis eros. Fusce id mi condimentum, tempor lorem ut, pharetra libero.
https://document.io/document/ipsum
In eget eleifend neque. Morbi ex leo, tincidunt non enim ut, rutrum suscipit metus. Cras laoreet ex ut massa consequat condimentum. Aenean finibus eu nisl ut rhoncus. Aliquam finibus nisl risus, id facilisis justo rutrum et. Aenean enim libero, commodo id mi ut, mattis sollicitudin tellus. Aliquam molestie ligula sit amet lorem malesuada, aliquet pretium dolor malesuada. Phasellus fringilla libero in sollicitudin tristique. Quisque molestie, enim et aliquam dapibus, ex erat ultrices nisi, luctus ornare lorem metus eu sapien.

然而,我使用匹配查询来搜索文档中的单词,正如你所看到的,有时URL中的单词也是实际文本的一部分。这把结果搞砸了。我只是想知道ElasticSearch是否有办法让我忽略URL,只关注文本?

此时此刻,我正在使用english分析仪。

您可以在分析器中使用Pattern替换字符过滤器。为了从你的文本中删除URL,你可以将这个过滤器添加到你的搜索分析器中:

过滤器:

"char_filter": {
"type": "pattern_replace",
"pattern": "\b(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]",
"replacement": ""
}

此筛选器将用empty string替换URL,这样您就不会从URL匹配中获得结果。

最新更新