我正在尝试更新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}}
根据回应,一切似乎都很好:作者的vaule改变了" Louisa"到了"赫伯特"。但如果我使用查询搜索" Herbert"我没有得到任何结果(http://localhost:8983/solr/MaharaPortfolioA/select?q=Herbert)。在我寻找解决方案时,我发现了该问题的不同可能原因:
我没有进一步的想法为什么我搜索" Herbert"没有回应。
提前致谢
答案 0 :(得分:0)
您实际上并未搜索作者字段:q=author:Herbert
将是查询作者的标准Lucene语法。当您使用q=Herbert
时,搜索会转到默认搜索字段,该字段可能不是作者(但通常是text
)。
如果您使用的是edismax
或dismax
查询解析器,则可以使用qf=author text
搜索text
和author
字段,以及您可以使用qf=author^5 text
为author
字段中的匹配提供更多相关性权重。
text
字段的默认配置可能不是stored="true"
,这将丢弃实际内容(并且仅保留用于搜索的索引术语)。
如果您使用ExtractingRequestHandler / Apache Tika / Solr Cell对内容编制索引,则会将内容添加到名为content
的字段中。如果该字段不存在,则删除内容。
Tika将所有提取的文本添加到内容字段中。
您可以使用fmap.content=<fieldname>
将内容映射到其他字段名称。
答案 1 :(得分:0)
首先确保在架构中将“author”字段设置为indexed =“true”,并使用您期望的类型进行设置。您可以使用Solr管理员和模式浏览器的分析工具来使用它来验证您的假设。
您使用实时获取评估更新效果很好。这很好,但是记住实时获取即使没有发生提交(因为它与事务日志协作),所以请确保软件提交或硬提交(触发openSearcher = true)
确保您的查询对您的用例有意义。如果你想专门搜索作者“作者:赫伯特”是正确的查询。