2017-04-07 77 views
0

我試圖更新solr文檔中的特定字段。出於測試目的,我使用作者字段。之後我會嘗試更新日期字段。我在cygwin終端上使用curl。這是我進入終端命令:Solr未顯示更新的文檔

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)。在尋找解決方案時,我發現該問題存在不同的可能原因:

我沒有進一步的想法爲什麼我的搜索「赫伯特」沒有給我答覆。

  • 是因爲我的唯一鍵是一個url而不是整數值?
  • 還是因爲我通過Cygwin使用Curl?此外,cURL(URL的客戶端)和curl(編程語言爲
    語言)之間的區別是 。如果教程使用這個術語,他們是否指cURL?
  • 另一個原因可能是「作者」在索引時被過濾和標記。也許我的更新沒有通過這些操作?

在此先感謝

+0

日誌說什麼? – Oyeme

+0

@Oyeme當我試圖改變「nrWords」的日誌是: '2017-04-07 14:02:28.745信息(qtp870698190-14)[x:MaharaPortfolioA] oasupLogUpdateProcessorFactory [MaharaPortfolioA] webapp =/solr path =/update params = {} {add = [https://www.moopaed.de/mahara/view/view.php?id=6093(1564028435152502784)]} 0 15' – Alexander

+2

您是否嘗試將commit = true添加到您的鏈接中? curl curl http:// localhost:8983/solr/MaharaPortfolioA/update?commit = true -d'[{「url」:「https://www.moopaed.de/mahara/view/view.php?id=6920 「,」author「:{」set「:」Herbert「}}]'(最後,commit = true參數告訴Solr提交我們發送給它的更新) – Oyeme

回答

0

你不是真正的搜索作者字段:q=author:Herbert將用於查詢作者的標準Lucene的語法。當您使用q=Herbert時,搜索將轉到默認搜索字段,該字段可能不是作者(但通常是text)。

如果您使用的是edismaxdismax查詢分析器,您可以使用qf=author text同時搜索textauthor領域,你可以使用qf=author^5 text給更多的相關性權重的author場命中。

text字段的默認配置可能不是stored="true",它會丟棄實際內容(並且只保留用於搜索的索引條款)。

如果您使用ExtractingRequestHandler/Apache Tika/Solr Cell將內容編入索引,則會將內容添加到名爲content的字段中。如果該字段不存在,則內容被刪除。

Tika將所有提取的文本添加到內容字段。

您可以使用fmap.content=<fieldname>將內容映射到不同的字段名稱。

0
  1. 首先確保字段'author'在模式中設置爲indexed =「true」,並使用您期望的類型進行設置。您可以使用Solr管理員的分析工具和模式瀏覽器來驗證您的假設。

  2. 您使用實時獲取來評估更新運行良好。雖然沒有提交(因爲它與事務日誌配合工作),但沒關係,即使沒有提交(因爲它與事務日誌合作),所以請記住實時獲取工作,因此請確保提交softcommit或硬提交(觸發openSearcher = true)

  3. 確保您的查詢對您的用例有意義。如果你想特別搜索作者「作者:赫伯特」是正確的查詢。