gpt4 book ai didi

elasticsearch - 在Elasticsearch中生成URL字符串的匹配项

转载 作者:行者123 更新时间:2023-12-02 23:01:37 28 4
gpt4 key购买 nike

我一直在尝试将标记器/标记过滤器和分析器的正确组合,以利用Elasticsearch来匹配URL。

不幸的是,到目前为止,我采取的每种方法似乎都错过了一两个极端情况。我希望外面有人可以对以下内容有所了解:

如果我将以下值存储在elasticsearch中:

  • http://www.example111.com
  • http://www.example111.com/cats
  • http://www.example111.com/cats?type=tabby
  • http://www.example111.com/cats/dogs
  • http://www.example111.com/dogs/cats
  • http://www.example222.com/cats
  • http://www.example222.com
  • http://www.example222.com/cats/dogs
  • http://www.example333.com/fish

  • 我想知道我可以使用什么查询来生成以下搜索字符串和结果集组合(按相关性得分排序):
  • http://www.example111.com/cats/dogs[4,2,3,1]
  • http://www.example111.com/cats?type=birman[2,1]
  • http://www.example111.com/dogs[1]
  • http://www.example222.com/cats[6,7]
  • http://www.example333.com[]

  • 这里表达的一般想法是,结果按照它们与输入的相似程度进行排序,一直到tld和scheme为止。当整个查询字符串不匹配或段不匹配时,结果将被丢弃。

    最佳答案

    这个怎么样:

    1)。当您存储网址时,网址数据是一个类似于以下内容的对象:

    {
    "tld" : "http://www.example111.com",
    "path" : "/cats",
    "qs" : "?type=birman"
    }

    我不认为您希望对这些进行分析...但是可能需要更多考虑。

    2)。当您必须查询这些记录时,您将类似地解析url查询。

    3)。连接符合您要求的查询-因此:
  • tld必须完全匹配
  • 结果中的
  • 路径必须是查询url中路径的子字符串-您可以使用查询时间分析器,该分析器将为您提供查询url中路径的所有可能的前缀子字符串(例如:给定的“/ cats / dogs” ,您想要的是“/”、“/c”、“/ca”、...、“/cats/dogs”),尽管这似乎效率不高……也许您可以像“/”,“/ cats”那样创建查询时,请先使用“,” // cats / dogs“,它们仅表示查询
  • 中的其他子句
  • 与查询字符串完全匹配吗?我不确定这里的全部要求。

  • 查询可能类似于(查询网址 http://www.example111.com/cats/dogs?type=birman):
    {
    "query" : {
    "bool" : {
    "must" : [
    {
    "match" : {
    "url.tld" : "http://www.example111.com"
    }
    },
    {
    "match" : {
    "url.qs" : "?type=birman"
    }
    }
    ]
    "should" : [
    {
    "match" : {
    "url.path" : {
    "query" : "/",
    "boost" : 1
    }
    }
    },
    {
    "match" : {
    "url.path" : {
    "query" : "/cats",
    "boost" : 2
    }
    }
    },
    {
    "match" : {
    "url.path" : {
    "query" : "/cats/dogs",
    "boost" : 3
    }
    }
    }
    ]
    }
    }
    }

    如果每个记录有多个url,请查看嵌套对象和嵌套查询。

    无论如何,所有这些只是一个可能的主意……这并不是您一直希望的一个便捷的快速查询。

    关于elasticsearch - 在Elasticsearch中生成URL字符串的匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33281895/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com