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

Apache Solr suggester dictionary在从集合中删除某些记录后不会更新

霍伟彦
2023-03-14

我想在上传一些初始数据(在Solr 5.3.1中)后更新Solr suggester字典。suggester字典在删除所有数据并将修改后的数据上载回后进行更新。但是当我删除任何特定的记录(例如ID=123)时,建议者仍然在结果集中返回被删除的记录。

    null
[
    {
        "id": 1,
        "name": "New York"
    },
    {
        "id": 2,
        "name": "New Jersey"
    },
    {
        "id": 3,
        "name": "California"
    }
]
curl -X POST -H 'Content-Type: application/json' 'http://localhost:8983/solr/mycollection/update?commit=true' --data-binary @json_data.json
{
    "responseHeader": {
        "status": 0,
        "QTime": 0,
        "params": {
            "q": "*:*",
            "indent": "true",
            "wt": "json",
            "_": "1448271522315"
        }
    },
    "response": {
        "numFound": 3,
        "start": 0,
        "docs": [
            {
                "id": "1",
                "name": [
                    "New York"
                ],
                "_version_": 1518622755181822000
            },
            {
                "id": "2",
                "name": [
                    "New Jersey"
                ],
                "_version_": 1518622755186016300
            },
            {
                "id": "3",
                "name": [
                    "California"
                ],
                "_version_": 1518622755187064800
            }
        ]
    }
}
{
    "responseHeader": {
        "status": 0,
        "QTime": 0
    },
    "spellcheck": {
        "suggestions": [
            "New",
            {
                "numFound": 2,
                "startOffset": 0,
                "endOffset": 3,
                "suggestion": [
                    "New Jersey",
                    "New York"
                ]
            }
        ],
        "collations": [
            "collation",
            "(New Jersey)"
        ]
    }
}

现在我使用以下命令从mycollection中删除“New Jersey”:curl http://localhost:8983/solr/mycollection/update?commit=true-h“content-type:text/xml”--data-binary'(id:2)'

现在select query只返回剩下的2条记录(删除“New Jersey”)

localhost:8983/solr/mycollection/select?q=%3a&wt=json&indent=true

{
    "responseHeader": {
        "status": 0,
        "QTime": 0,
        "params": {
            "q": "*:*",
            "indent": "true",
            "wt": "json",
            "_": "1448272061874"
        }
    },
    "response": {
        "numFound": 2,
        "start": 0,
        "docs": [
            {
                "id": "1",
                "name": [
                    "New York"
                ],
                "_version_": 1518622755181822000
            },
            {
                "id": "3",
                "name": [
                    "California"
                ],
                "_version_": 1518622755187064800
            }
        ]
    }
}
{
    "responseHeader": {
        "status": 0,
        "QTime": 0
    },
    "spellcheck": {
        "suggestions": [
            "New",
            {
                "numFound": 2,
                "startOffset": 0,
                "endOffset": 3,
                "suggestion": [
                    "New Jersey",
                    "New York"
                ]
            }
        ],
        "collations": [
            "collation",
            "(New Jersey)"
        ]
    }
}

会有什么问题?suggester组件(Solr.SpellCheckComponent)是否使用了任何缓存?如果是,如何清除?

如有任何帮助,我们将不胜感激。

共有1个答案

乔伯寅
2023-03-14

大多数拼写检查器和提示器并不直接从索引中工作,而是建立一个平行的结构。有一个在每次提交的基础上构建的设置,如果该设置为false,则可以在请求中传递一个标志来触发重建。对于拼写检查器,此标志为Spellcheck.build或Spellcheck.reload。

因此,检查您的配置,并尝试显式调用rebuild/reload。

 类似资料:
  • 我们有一个Kafka流聚合拓扑。我们需要控制changeLog主题的大小,以减少Kafka存储成本。因此,我们在拓扑中使用transformer(DSL API)调度标点符号,该标点符号使用KeyValueStore.delete()从stateStore中删除旧记录。 我能够验证在删除之后,在进一步调度的标点符号触发器中,删除的键不在状态存储中。但是它是否也会从changeLog主题中删除该记录

  • 问题内容: 我有一个这样的表: 我正在尝试删除具有3个以上具有相同ID的名称的记录,但要删除所有记录。因此,我试图得到这样的东西: 我不了解如何编写此查询。我已经达到了保留一个记录但没有记录阈值的程度: 给我: 有什么建议?哦,对了,我不在乎合并时会保留哪些记录。 问题答案: 您可以使用CTE做到这一点

  • Selenium IDE不会记录来自该网站“http://suppliers.inwk.com”的任何内容。您可能没有获得登录访问权限的凭据,但如果您可以在Selenum IDE中记录登录页面本身,那么我想我们可以找到根本原因,或者至少得到一个线索。 如果我将页面保存到本地计算机,打开页面,并尝试记录它的工作情况。似乎这一行的来源就是那一页的根本原因。你们中有谁能从这一行中找出问题的性质吗? 此外

  • 我有以下问题: 我有一个矩阵。现在,我想在矩阵的每一行中删除一个条目:在包含某个数字(比如4)的行中,我想删除带有该数字的条目,在其他行中,我只想删除最后一个元素。 如果我有矩阵 这给了 2 0 4 0 删除后应该只是 2. 0 谢谢你的帮助!

  • 我正在读取一个CSV文件,其中包含有关山丘的数据。我可以从文件中读取数据,并将列标题与6个字段相关联。当前我的输出打印如下: 但我试图获得如下输出: 因此,从技术上讲,我试图实现的是,从我的集合中选择3个值,它们实际上在地图中,并且只打印出名称和高度。 我的当前代码是: 我认为我必须使用另一个for循环,并从集合中选择3个值,然后在最后的print语句中使用“.getName”和“.getHeig

  • 本文向大家介绍从表中删除记录,其中相关面试题,主要包含被问及从表中删除记录,其中时的应答技巧和注意事项,需要的朋友参考一下 尝试首先选择最大组,然后将其用作子查询。 编辑: