2014-10-08 103 views
0
  • 我有一個窗體,其中包含幾個文本字段和兩個日期字段,分別稱爲 - created和Deadline。
  • 我會對數據庫

我試圖創建動態搜索全文搜索索引。所以,在搜索表單中,我添加了所有的字段,我想在搜索中使用以及在Action搜索腳本中生成查詢,然後在FTSearch函數中使用該查詢。一切工作都非常適合文本字段,但是日期字段 - 出現問題。搜索結果不符合我的預期。LotusScript FTSearch日期字段

這是我的字段在視圖中表示:

created  Deadline  
08.10.2014 10.10.2014  
08.10.2014 14.10.2014  
06.10.2014 10.10.2014 

那些是我的搜索查詢的示例:

  • 「[創建]> = 2014年4月10日」
  • 「[創建]> = 04.10.2014 & [創建] < = 07.10.2014「
  • 」[created]> = 06.10.2014 & [Deadline]> = 08.10.2014「
  • 「[創建]> = 2014年10月3日& [創建] < = 2014年5月10日& [截止]> = 2014年8月10日& [截止] < =二〇一四年十月一十一日」

但正如我所說 - 返回的結果與搜索查詢沒有任何相似之處。什麼可能是錯誤的?

實施例: - 所有文檔

Created  Deadline    
09.10.2014 10.10.2014 

03.10.2014 09.10.2014 

08.10.2014 10.10.2014 

08.10.2014 14.10.2014 

07.10.2014 09.10.2014 

06.10.2014 10.10.2014 

06.10.2014 10.10.2014 

03.10.2014 06.10.2014 
  • 查詢 「[創建]> = 2014年10月7日」

結果 - 所有改變

  • 查詢「[創建]> = 07.10.2014 & [創建] < = 09.10.2014「

結果 - 0文檔

  • 「[截止]> = 2014年9月10日」

    • 結果 - 的所有文檔

這是如何我調用它並顯示在視圖中:

Set col = db.FTSearch(query, 0)   
    Call col.putallinfolder("Search",True) 
    Call ws.ViewRefresh 

它可以,造成事實上的問題,那場創建和截止日期存儲日期沒有時間?

回答

0

假設日期存儲爲日期字段: 嘗試更換期間「。」。在日期格式中使用斜槓「/」。英國金融時報搜索的日期值而不是文字表示。

[created] >= 26/4/2014 

注日期和月份的數字(我英文) - 你在服務器的地理環境的mecry以格式是DD-MM-YYYY(歐洲)或mm-dd-yyyy(美國格式)。

如果日期存儲在文本字段: 試着在日期值,例如報價

[created] = "04.10.2014" 

但是比較喜歡> =(或>,<等)將不與文本字段FT搜索工作。它只適用於日期和數字字段。

+0

我試圖改變格式 - 它沒有幫助。 此外 - 日期存儲在日期/時間字段中,文檔表單和搜索表單中字段的表示格式相同。 – 2014-10-08 13:42:19

+0

你可以發佈一個不起作用的例子嗎?即你的查詢是什麼,結果中的字段是什麼?這是在Notes客戶端搜索欄中運行,還是通過一些lotusscript或通過Web瀏覽器搜索URL運行? – user2808054 2014-10-08 15:28:44

+0

我在第一篇文章中添加了示例 – 2014-10-09 08:30:03

0

可能是因爲當您第一次創建日期字段時,您將其設置爲文本。然後,您稍後將類型更改爲日期/時間。 這會將字段設置爲UNK表中的文本,這會阻止您執行這些類型的搜索。可以重建UNK表,但這可能會很棘手。 您可以在這裏閱讀有關UNK表的更多信息:http://www-01.ibm.com/support/docview.wss?uid=swg21100238

+0

。我深入探討了這個話題。我嘗試了與UNK相關的所有內容:刪除索引,重新創建,使用創建副本和副本在本地刪除,然後再次複製到服務器並重新創建索引。字段從一開始就是這樣使用的:創建的計算日期/時間字段的值爲@Created和Deadline - 帶日曆樣式的可編輯日期/時間字段,其中用戶選擇適當的日期。所以,這就是爲什麼我對此感到困惑。 – 2014-10-09 15:05:24

0

從我的角度來看,問題在於您試圖使用內部Lotus Notes字段/ propery。

剛纔檢查與搜索:

[_CreationDate] < 2014年7月10日和[_CreationDate] < 2014年7月10日

工作和返回同樣有效的結果。我想這就是你要找的。

如果您的表單上沒有名爲「created」的實際字段(並且保存在文檔中的值中)那麼該公式不會返回您所期望的值。

[_CreationDate]的作用幾乎與公式@created一樣。

p.s.在深Lotus Notes迷宮@創建在某些情況下是不一樣的doc.created,但多數民衆贊成在不同的故事。

+0

我有使用公式@created創建的字段。但問題不僅在於創建的領域,而且還在於截止日期。 – 2014-10-28 16:08:23

+0

你確定ftsearch沒有你的代碼嗎?我的意思是它從視圖上起作用?以下是截圖示例:http://i.imgur.com/f0sX2of.png – user1312673 2014-10-29 10:15:13

0

好吧,最後我找到了解決這個問題的方法。因此,FTSearch按設計工作,查詢返回適當的文檔集合。但問題是putallinfolder函數,或者更好地說 - 與響應文件。 Lotus每次清除搜索視圖,在產生的集合中存在帶有子項的文檔。所以,我添加了自定義功能ptInFolder(我想,我們還可以用的NotesDocument類的本地putInFolder法):

Function putInFolder(doc As NotesDocument) 
    On Error Goto catch 
    Call doc.PutInFolder("Search") 
catch: 
    Exit Function 
End Function 

而搜索按鈕點擊,我是通過遍歷集合:

Set col = db.FTSearch(query, 0)  

    For i = 1 To col.Count 

     Set doc = col.GetNthDocument(i) 

     Call putInFolder(doc)   

    Next 

現在一切正常。有點慢,但文件的數量並沒有增加,所以這個解決方案對我有好處。