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

根据单词索引更改搜索顺序

柳玄裳
2023-03-14
问题内容

有什么方法可以增加文档开头的用语吗?例如,我有3个文档。

Medicine XXX
Sulpher This medicine contains sulpher and should be taken only after consultation with your doctor.

Medicine YYY
contains: sulpher Not recommended by most physicians

Medicine ZZZ
This medicine works like sulpher but does not contain sulpher at all.

XXX应该在搜索词“
Sulpher”的顶部列出,因为那是该文档中的第一个单词。如果YYY列在顶部,则可以,因为与XXX相同。但是ZZZ应该永远是最后一个。换句话说,在“左侧”找到的术语应比在“右侧”找到的术语具有更高的优先级。


问题答案:

您可以通过小写标准化术语位置来提高:

PUT sulphur
{
  "settings": {
    "analysis": {
      "normalizer": {
        "keyword_lowercase": {
          "type": "custom",
          "filter": ["lowercase"]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "text": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "normalizer": "keyword_lowercase"
          }
        }
      }
    }
  }
}

POST sulphur/_doc
{"text":"This medicine works like sulpher but does not contain sulpher at all."}
POST sulphur/_doc
{"text":"contains: sulpher Not recommended by most physicians"}
POST sulphur/_doc
{"text":"Sulpher This medicine contains sulpher and should be taken only after consultation with your doctor."}

然后

GET sulphur/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "function_score": {
            "query": {
              "match": {
                "text": "sulpher"
              }
            },
            "script_score": {
              "script": """
                def pos = doc['text.keyword'].value.indexOf('sulpher');
                return Math.exp((2.0/(pos+1)))
              """
            },
            "boost_mode": "replace"
          }
        }
      ]
    }
  }
}

屈服

[
  {
    "_index":"sulphur",
    "_type":"_doc",
    "_id":"sf5S2nEBW-D5QnrWODvB",
    "_score":7.389056,
    "_source":{
      "text":"Sulpher This medicine contains sulpher and should be taken only after consultation with your doctor."
    }
  },
  {
    "_index":"sulphur",
    "_type":"_doc",
    "_id":"sP5S2nEBW-D5QnrWNjtw",
    "_score":1.1993961,
    "_source":{
      "text":"contains: sulpher Not recommended by most physicians"
    }
  },
  {
    "_index":"sulphur",
    "_type":"_doc",
    "_id":"r_5S2nEBW-D5QnrWNDuw",
    "_score":1.079959,
    "_source":{
      "text":"This medicine works like sulpher but does not contain sulpher at all."
    }
  }
]


 类似资料:
  • 问题内容: 我需要在全文搜索和索引搜索之间进行操作: 我想在表的一列中搜索文本(如果很重要的话,该列上也可能会有一个索引)。 问题是,我想搜索列中的单词,但是我不想匹配部分。 例如,我的列中可能包含公司名称: Mighty Muck Miller and Partners Inc. Boy&Butter Breakfast company 现在,如果我搜索“ Miller ”,我想找到第一行。但是

  • 我有大量相同类型的实体,每个实体都有大量属性,并且我只有以下两种选择来存储它们: 将每个项存储在索引中并执行多索引搜索 将所有enties存储在单个索引中,并且只搜索1个索引。 一般而言,我想要一个时间复杂度之间的比较搜索“N”实体与“M”特征在上述每一种情况!

  • 这道题是 LeetCode 212 题,是 79 题的升级版。 给定一个二维网格和包含多个单词的字典,找出所有同时在二维网格和字典中出现的单词。 解法一:回溯 直接使用 79 题的代码,依次查找每个单词是否在 board 中有一条对应的路径。 时间复杂度:$(n×4^L)$,$n$ 为单词个数,$L$ 为单词的最大长度 搜索每个单词的时间复杂度相当于搜索树的节点数。搜索最大深度为 $L$,$L$

  • 我在研究二叉树。我找到了在树中插入节点的代码。这里“root”是类“TreeType”中结构类型的指针变量,作为“private member”。 在这个函数中,“根”是通过引用传递的,所以在“插入”函数中,“树”中的任何变化也会导致“根”的变化。如果我们再次调用插入函数,根将指向最后一个节点还是指向第一个节点?所以,根据我的说法,当它指向最后一个节点时,插入函数将不再工作。有人能帮忙吗?

  • 我在处理一个单词搜索问题。我正确地实现了dfs搜索,但在其他地方有一些琐碎的错误。

  • 搜索词 关键参数 报告 method metrics(指标, 数据单位) 其他参数 搜索词 source/searchword/a pv_count (浏览量(PV)) pv_ratio (浏览量占比,%) visit_count (访问次数) visitor_count (访客数(UV)) new_visitor_count (新访客数) new_visitor_ratio (新访客比率,%)