Solr没有显示更新的文档

时间:2017-04-07 13:09:39

标签: curl solr

我正在尝试更新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"没有回应。

  • 是因为我的唯一键是url而不是整数值?
  • 或者是因为我通过Cygwin使用Curl?此外还有一个 cURL(URL的客户端)和curl(编程)之间的区别 语言)。如果教程使用这个术语,他们是否参考cURL?
  • 另一个原因可能是"作者"在索引时进行过滤和标记化。也许我的更新没有完成这些操作?

提前致谢

2 个答案:

答案 0 :(得分:0)

您实际上并未搜索作者字段:q=author:Herbert将是查询作者的标准Lucene语法。当您使用q=Herbert时,搜索会转到默认搜索字段,该字段可能不是作者(但通常是text)。

如果您使用的是edismaxdismax查询解析器,则可以使用qf=author text搜索textauthor字段,以及您可以使用qf=author^5 textauthor字段中的匹配提供更多相关性权重。

text字段的默认配置可能不是stored="true",这将丢弃实际内容(并且仅保留用于搜索的索引术语)。

如果您使用ExtractingRequestHandler / Apache Tika / Solr Cell对内容编制索引,则会将内容添加到名为content的字段中。如果该字段不存在,则删除内容。

  

Tika将所有提取的文本添加到内容字段中。

您可以使用fmap.content=<fieldname>将内容映射到其他字段名称。

答案 1 :(得分:0)

  1. 首先确保在架构中将“author”字段设置为indexed =“true”,并使用您期望的类型进行设置。您可以使用Solr管理员和模式浏览器的分析工具来使用它来验证您的假设。

  2. 您使用实时获取评估更新效果很好。这很好,但是记住实时获取即使没有发生提交(因为它与事务日志协作),所以请确保软件提交或硬提交(触发openSearcher = true)

  3. 确保您的查询对您的用例有意义。如果你想专门搜索作者“作者:赫伯特”是正确的查询。