当前位置: 首页 > 知识库问答 >
问题:

弹性搜索N-gram不返回预期结果

乌杰
2023-03-14

试图找出这个微不足道的例子的分数。我希望得到brenda eaton的文件,但我得到的是brenda fassie的最佳结果。

PUT ngram
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "my_tokenizer"
        }
      },
      "tokenizer": {
        "my_tokenizer": {
          "type": "ngram",
          "min_gram": 3,
          "max_gram": 3,
          "token_chars": [
            "letter",
            "digit"
          ]
        }
      }
    }
  },
   "mappings": {
    "tweet" : {
      "properties" : {
        "text" : {
          "type" :    "text",
          "analyzer": "my_analyzer"
        }
      }
    }
  }
}

PUT ngram/tweet/1
{
 "text":"searched the blue sky during the summer"
}
PUT ngram/tweet/2
{
 "text":"sdssded the trans hex during the sssss"
}

PUT ngram/tweet/3
{
 "text":"searched the brenda eaton during the summer"
}
PUT ngram/tweet/4
{
 "text":"sdssded the brenda fassie during the sssss"
}


GET ngram/_search
{
    "query": {
        "match" : {
            "text" : {
                "query" : "brenda eaton",
                "max_expansions" : 10
            }
        }
    }
}

共有1个答案

马才
2023-03-14

在填充索引的初始阶段,文档的相关性可能很大程度上取决于它们在碎片中的分布。尝试使用一个主碎片和一个副本碎片创建索引,您将获得所需的结果。

您可以在Elasticsearch guide的以下文章中找到对这种现象的很好解释:相关性被破坏了!

 类似资料:
  • 创建新的。NET Framework 4.6.1控制台应用程序 为NEST 6.5.0和ElasticSearch.NET 6.5.0添加NuGet包 然后,我创建了一个新的弹性索引,其中包含具有“tags”属性的对象(类型为“mything”)。此标记是一组可能值中的随机逗号分隔的单词集。在测试中,我在索引中插入了100到5000项。我试了越来越少的可能的词在设置。

  • 我有一个问题,我想把弹性搜索的结果减少到1000个,不管有多少匹配的结果匹配,但这不应该影响排名和得分。 我在尝试,但这似乎只是告诉弹性搜索只获得前N个结果,而不考虑分数。如果我说错了,请纠正我。 有什么帮助吗? 编辑: 我已经在使用分页。因此,在From/Size中使用Size只会影响当前页面的大小。但我想将总结果的大小限制为1000,然后对其进行分页。

  • 值a、b和c的组合是唯一的。 我想通过使用值a和b执行bool筛选搜索来查找“value_c”的值。 在我的代码中,我尝试如下: 我是不是漏掉了什么?会不会是因为数据集太小?我们在代码库的其他地方使用了相同的Bool Filter Elastica查询,这些查询如预期的那样工作,但是我似乎无法从这个索引中返回任何数据。 如有任何帮助,不胜感激。

  • 我正在使用批量请求执行弹性搜索完整索引。我在索引过程中遇到了一个问题,结果是空的。由于我正在完整索引期间删除索引,因此如何处理这种情况。 我已经完成了以下步骤: 删除索引 创建索引 创建映射 批量请求 索引属性和映射: } 我有大约7.5万份文件。 谢谢,Sree。

  • 我正在用Hibernate Search 4.5.1和Spring 4.0.5版本构建一个应用程序。我正在尝试索引以下类: 我正在构建一个junit测试用例,看起来如下所示: 我还注意到在luke lucene上,一些索引词的长度最多为6个字符,例如,一首歌的艺术家是“后代”,而索引中存储的词是“the”和“offspr”。第一个可以,但第二个不应该是“后代”。为什么要截断名字?

  • 我正在尝试使用弹性搜索的内部点击功能来检索子文档内容。我的查询包含两个has_child子句,如下面的代码片段所示。我所观察到的是,我只获得了内部点击响应中属于第二个子子句的那些子内容。看起来最后的内部点击覆盖了第一个内部点击。 有什么方法可以同时获得内心的点击率吗? 下面是我使用的查询。