【发布时间】:2017-09-02 21:25:22
【问题描述】:
我正在尝试更新 solr 文档中的特定字段。出于测试目的,我使用作者字段。之后我会尝试更新日期字段。我在 cygwin 终端中使用 curl。这是我在终端中输入的命令:
curl http://localhost:8983/solr/MaharaPortfolioA/update -d '[{"url":"https://www.moopaed.de/mahara/view/view.php?id=6920","author":{"set":"Herbert"}}]'
为了检查是否成功,我正在使用以下命令并获得此响应:
$ curl http://localhost:8983/solr/MaharaPortfolioA/get?id="https://www.moopaed.de/mahara/view/view.php?id=6920"
{
"doc":
{
"url":"https://www.moopaed.de/mahara/view/view.php?id=6920",
"portfolio_title":"IT 2 Portfolio - View 2",
"title":"Themenschwerpunkt Informationssysteme - moopaed mahara",
"author":"Herbert",
"indexDate":"2017-04-05T22:04:10Z",
"nrImages":8,
"nrWords":7474,
"nrUploadedImages":6,
"nrLinks":0,
"cohort":"IT3 WS 2013/2014",
"lecture":"OOP",
"nrWikipediaImages":0,
"nrWikipediaLinks":0,
"_version_":1564023239370342400}}
根据回复,一切似乎都很好:作者的名字从“路易莎”变成了“赫伯特”。但是,如果我使用查询来搜索“Herbert”,我将得不到任何结果 (http://localhost:8983/solr/MaharaPortfolioA/select?q=Herbert)。在寻找解决方案时,我发现了导致该问题的不同可能原因:
- 必须将特定字段设置为stored="true"。作者设置为真。
- 更新后,我通过 solr 管理面板中的“优化”按钮优化了核心。
- 我做了一个提交:http://localhost:8983/solr/MaharaPortfolioA/update?commit=true。我使用了这个解决方案:Link
我不知道为什么我搜索“Herbert”没有得到任何回应。
- 是不是因为我的唯一键是 url 而不是整数值?
- 还是因为我通过 Cygwin 使用 Curl?此外还有一个
cURL(URL 客户端)和 curl(编程
语言)。如果教程使用这个术语,它们是指 cURL 吗? - 另一个原因可能是“作者”在编制索引时被过滤和标记。也许我的更新没有通过这些操作?
提前致谢
【问题讨论】:
-
日志是怎么说的?
-
@Oyeme 当我尝试更改“nrWords”时,日志为:'2017-04-07 14:02:28.745 INFO (qtp870698190-14) [ x:MaharaPortfolioA] oasupLogUpdateProcessorFactory [MaharaPortfolioA] webapp =/solr path=/update params={}{add=[moopaed.de/mahara/view/view.php?id=6093(1564028435152502784)]} 0 15'
-
您是否尝试将 commit=true 添加到您的链接中? curl curl localhost:8983/solr/MaharaPortfolioA/update?commit=true -d '[{"url":"moopaed.de/mahara/view/view.php?id=6920","author":{"set":"Herbert"}}]' (最后 commit=true 参数告诉 Solr 提交我们发送给它的更新应此要求。)
-
尝试重启solr服务,有时索引可能会乱...
-
您实际上在搜索
author字段吗?q=author:Herbert将是用于查询author的标准 Lucene 语法。当您使用q=Herbert时,搜索会转到默认搜索字段,这可能不是author。