当前位置: 首页 > 面试题库 >

Elasticsearch-使用“标签”索引来发现给定字符串中的所有标签

韩烈
2023-03-14
问题内容

我有一个带有“标签”索引的elasticsearch v2.x集群,其中包含大约5000个标签:{tagName, tagID}。给定一个字符串,是否可以查询标签索引以获取在该字符串中找到的所有标签?我不仅要精确匹配,而且还希望能够控制模糊匹配而不过于慷慨。太过慷慨了,只有在标签中的所有标记都位于一定距离内(例如5个单词)时,标签才应该匹配。

例如,给定字符串:

Model 22340 Sound Spectrum Analyzer

以下标记应匹配:

sound analyzer sound spectrum analyzer

但不是

sound meter light spectrum chemical analyzer


问题答案:

我认为不可能创建能够自动标记随机字符串的准确的Elasticsearch查询。这基本上是一个反向查询。将标签与文档匹配的最准确方法是构造对标签的查询,然后搜索文档。显然,如果您需要遍历每个标签以自动为文档添加标签,则效率将非常低下。

执行反向查询,您想使用Elasticsearch Percolator API:

https://www.elastic.co/guide/zh-CN/elasticsearch/reference/current/search-
percolate.html

该API非常灵活,可让您在具有多个字段的文档中创建相当复杂的查询。

基本概念是这样的(假设您的代码具有应用特定的ID字段):

  1. 对于每个标签,为其创建查询,然后使用过滤器的ID字段向渗滤器注册该查询。

  2. 要自动标记字符串,请将您的字符串(作为文档)传递给Percolator,后者将与所有已注册的查询匹配。

  3. 遍历比赛。每个匹配项都包含查询的_id。使用_id引用标记。

这也是阅读的好文章:https :
//www.elastic.co/blog/percolator-redesign-blog-
post



 类似资料:
  • 本文向大家介绍PHP清除字符串中所有无用标签的方法,包括了PHP清除字符串中所有无用标签的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP清除字符串中所有无用标签的方法。分享给大家供大家参考。具体实现方法如下: 很多时候需要输出一些 “纯” 字符串,也就是去除任何杂质,例如 Html 标签、空格之类的文本,输出的摘要就是如此,下面的这个函数可以帮你实现着一点. PHP实例代码如下

  • <?php $result=sp_param_lable('id:2;cat:home'); print_r($result); ?>

  • 问题内容: 我遇到一个问题,其中在JavaScript中用引号引起来的字符串中包含结束脚本标记,这正在终止该脚本。我认为这不是预期的行为。 我感兴趣的测试用例浏览器:Mozilla / 5.0(X11; U; Linux i686; en-US; rv:1.9.1.4)Gecko / 20091028 Ubuntu / 9.10(karmic)Firefox / 3.5.4。 问题答案: 怎么了?

  • 本文向大家介绍js中去除字符串中所有的html标签代码实例,包括了js中去除字符串中所有的html标签代码实例的使用技巧和注意事项,需要的朋友参考一下 对于获取了一大堆字符串但是又不想要里面的html标签怎么办? 特别是像博客园这个富文本框中,可以带样式的,取出来的文章内容也是带样式的。 但是在某些地方只要显示文本不想显示其他标签,只好这样做。 以上就是本文的全部内容,希望对大家的学习有所帮助,也

  • 问题内容: 有没有简便的方法可以删除字符串中的所有HTML标记或任何与HTML相关的内容? 例如: 问题答案: 您可以使用一个简单的正则表达式,如下所示: 请注意,此解决方案有其自身的缺陷。 请参阅删除字符串中的HTML标签以)获取更多信息 另一个解决方案是使用HTML AgilityPack。您可以在下面的库中找到示例:HTML敏捷包-删除不需要的标签而不删除内容?

  • 我有一个elasticsearch索引,其中包含具有以下字段的用户:.“名称”:“凯”“年龄”:“23”“位置”:“德里,印度”“标签”:[“搜索”,“nosql”]等。 我想在用户的所有字段中查询多个字符串(例如:[“nosql”、“德里”)。可以使用Java API吗? 这是我正在使用的代码示例。(但与问题无关)这只是为了了解我现在使用的对象。 感谢提前。:)