文件搜索方法及裝置與流程
2023-09-23 01:39:45 2

本發明涉及網際網路領域,具體而言,涉及一種文件搜索方法及裝置。
背景技術:
SVN(subversion)是一款文件管理系統,其用於管理工程項目中的文檔、圖片、代碼等文件管理,能夠記錄文件每次修改的內容。如果需要查找SVN工程項目中特定版本的特定文件,當一個工程項目中的文件數量為m個,且每個文件平均經歷過n次修改,那麼搜索的複雜程度將會達到m×n。因此,當m與n的乘積結果達到較大數值時,意圖在SVN工程項目中查找特定文件將會變得極為費時。
雖然SVN自帶的搜索功能可以根據日誌和提交者等標識來搜索特定文件,但是卻無法通過文件內容來對文件進行搜索,如果希望根據文檔中的具體語段或者特定一張圖來查找這個文件,則只能逐個文件更新到歷史每一個版本,然後打開文件再進行查找,其查找過程依然十分費時。
為此,相關技術中提供了Windows本地文件檢索功能,其可以檢索到指定目錄下的文件或者文件夾名字包含該關鍵字的內容。這種方式僅限於採用文件名稱進行檢索,而不包含對文件內容的檢索。對於SVN管理的本地文件而言,如果需要對每個版本進行檢索,則在檢索之前需要採用SVN版本管理逐個更新到特定版本之後才能開始進行搜索。
由此可見,Windows本地文件檢索功能存在如下缺陷:
(1)無法搜索文檔內容,而只能搜索文件或者文件夾名;
(2)缺少索引圖片功能,無法利用圖片搜索文件,更無法通過圖文信息結合的方式來搜索文件;
(3)對於SVN版本控制系統而言,Windows的資源管理器並沒有對SVN的日誌建立索引,因此無法根據日誌搜索SVN中的文件;
(4)SVN本地文件只有一個版本,因此windows資源管理的搜索功能只能搜索一個SVN版本文件。
此外,相關技術中還提供了SVN的日誌搜索功能,其能夠提供對於日誌、文件路徑、提交者、版本、提交日期等日誌信息搜索,通過選中指定日誌條目,可以查看文件位置。然而,該功能無法根據具體的文件內容來進行搜索,也無法根據圖像信息來進行文件篩選或者搜索,因而無法實現圖文信息結合的本地文件搜索。
由此可見,SVN的日誌搜索功能存在如下缺陷:
(1)未能對文檔內容建立索引,因此無法搜索文檔內容;
(2)未能對圖片建立索引並進行搜索,更無法提供圖文信息結合的搜索功能。
進一步地,相關技術中還提供了一種SVN全文搜索系統及搜索方法,該方法能夠實現Subversion文件庫的全文搜索,其主要由提交偵測模塊、變更文檔抽取模塊、變更文檔索引模塊、版本過濾器構建模塊、修訂版本更新文件過濾器構建模塊和全文搜索執行模塊組成,其中,各個模塊所要實現的具體功能如下:
提交偵測模塊負責偵測SVN版本庫中文件的新增與變化情況;
變更文檔抽取模塊負責調用SVN版本庫的函數指令從SVN版本庫中獲取當前版本的變更的文檔集;
變更文檔索引模塊負責根據提取的變更文檔集和發生變更的版本號,利用Lucene對變更文檔集進行全文索引;
版本過濾器構建模塊負責在SVN版本庫中的版本變更時獲取變更的文檔,並提取變更的文檔,建立版本的搜索過濾器;
修訂版本更新文件過濾器構建模塊負責獲取修訂版本過濾器存模塊中相鄰兩個修訂版本的搜索過濾器;
全文搜索執行模塊負責獲取搜索過濾器,訪問Lucene索引搜索庫。
然而,該技術方案雖然相對於上述兩種解決方案有所改進,但是並沒有明確不同文檔的內容需要統一編碼,不同文件編碼方式不一致會降低搜索準確性和搜索效率;並且該技術方案在建立索引的時候只對文檔內容建立索引,而忽視了SVN日誌信息,僅能夠通過文檔內容進行搜索,而無法在日誌文本與文檔內文本之間建立關聯搜索。除此之外,在建立索引過程中,由於缺少提取圖片信息,因而也不能夠對圖像進行索引,進而無法通過單一的文檔圖片搜索到文檔位置,也無法形成圖文信息結合的搜索功能。
由此可見,上述SVN全文搜索系統及搜索方法存在如下缺陷:
(1)無法對圖片建立索引並進行搜索,更無法提供圖文信息結合的搜索方式;
(2)在文檔信息提取過程中,無法提取文檔中的圖片,例如:PDF文檔、EXCEL文檔中的圖片;
(3)沒有考慮多種文檔中格式編碼的非一致性問題;
(4)建立索引僅針對文檔內容建立索引,而未對SVN版本日誌建立索引,從而無法建立日誌文本和文檔文本內容之間的關聯。
綜上所述,相關技術中所提供的上述技術方案均無法提供單獨通過圖片進行搜索或圖文信息結合的搜索方式,而且還未考慮到在搜索過程中結合文件更新的屬性信息進行搜索。
針對上述的問題,目前尚未提出有效的解決方案。
技術實現要素:
本發明實施例提供了一種文件搜索方法及裝置,以至少解決相關技術中所提供的文件搜索方案無法提供單獨通過圖片進行搜索或圖文信息結合的搜索方式,而且還未考慮到在搜索過程中結合文件更新的屬性信息進行搜索的技術問題。
根據本發明實施例的一個方面,提供了一種文件搜索方法,包括:
從預設文件存儲區域獲取更新文件集合以及更新文件集合中每個文件對應的文件屬性信息集合;從更新文件集合的每個文件中分別提取文本內容和/或圖片內容;對獲取到的文件屬性信息集合以及提取到的文本內容和/或圖片內容進行統一編碼格式轉換,並建立文件搜索索引。
可選地,從更新文件集合的每個文件中分別提取文本內容和/或圖片內容包括:根據更新文件集合中包含的每個文件的文件名稱後綴進行分類;從分類後未包含圖片信息的第一類型文件中提取文本內容,和/或,從分類後包含圖片信息的第二類型文件中分別提取圖片內容或者提取文本內容和圖片內容。
可選地,對文件屬性信息集合以及文本內容和/或圖片內容進行統一編碼格式轉換包括:判斷文件屬性信息集合所採用的編碼格式與預定義的編碼格式是否相同,如果不同,則將文件屬性信息集合所採用的編碼格式轉換為預定義的編碼格式;判斷文本內容所採用的編碼格式與預定義的編碼格式是否相同,如果不同,則將文本內容所採用的編碼格式轉換為預定義的編碼格式;和/或,從圖片內容中提取圖像特徵,並判斷圖像特徵所採用的編碼格式與預定義的編碼格式是否相同,如果不同,則將圖像特徵所採用的編碼格式轉換為預定義的編碼格式。
可選地,建立文件搜索索引包括以下之一:當提取到文本內容時,在採用統一編碼後的文本內容與文件屬性信息集合之間建立關聯索引,並在與圖片內容對應的欄位填入空字符串;當提取到圖片內容時,在採用統一編碼後的圖片內容與文件屬性信息集合之間建立關聯索引,並在與文本內容對應的欄位填入空字符串;當提取到文本內容和圖片內容時,在採用統一編碼後的文本內容、圖片內容和文件屬性信息集合三者之間建立關聯索引。
可選地,在對文件屬性信息集合以及文本內容和/或圖片內容進行統一編碼格式轉換,並建立文件搜索索引之後,還包括:接收來自於用戶終端的文本搜索信息和/或圖片搜索信息,其中,文本搜索信息和/或圖片搜索信息均採用預定義的編碼格式,文本搜索信息是從用戶在用戶終端輸入的文本信息中提取的一個或多個關鍵詞且文本信息包括以下至少之一:文件本身包含的字符內容、文件屬性信息集合中的部分或全部文件屬性信息,圖片搜索信息從用戶在用戶終端輸入的圖片信息中提取的圖像特徵;採用文件搜索索引查找與文本搜索信息對應的第一備選文本集合,和/或,與圖片搜索信息對應的第二備選文件集合,和/或,與文本搜索信息和圖片搜索信息對應的第三備選文件集合,其中,第一備選文本集合和第二備選文件集合中包含的文件數量為預先自定義,第三備選文件集合是由文本搜索信息對應的搜索結果與圖片搜索信息對應的搜索結果進行邏輯與操作後得到的。
可選地,在採用文件搜索索引查找第一備選文本集合和/或第二備選文件集合之後,還包括:向用戶終端返回第一備選文本集合、第二備選文件集合與第三備選文件集合中至少之一,其中,第一備選文本集合中的文件按照關鍵詞匹配度由高到低進行排列,第二備選文本集合中的文件按照圖像特徵距離匹配度由高到低進行排列,在向用戶終端返回第三備選文件集合時,優先顯示第三備選文件集合。
可選地,更新文件集合為預設文件存儲區域內存儲的部分或全部文件在不同版本號之間發生過更新的文件。
可選地,文件屬性信息集合包括以下至少之一:對文件進行更新的人員信息;文件更新時間;文件更新後的版本號;文件更新的日誌信息;文件更新方式,其中,文件更新方式包括以下之一:新增文件、修改文件、刪除文件。
根據本發明實施例的另一方面,還提供了一種文件搜索裝置,包括:
獲取模塊,用於從預設文件存儲區域獲取更新文件集合以及更新文件集合中每個文件對應的文件屬性信息集合;提取模塊,用於從更新文件集合的每個文件中分別提取文本內容和/或圖片內容;處理模塊,用於對獲取到的文件屬性信息集合以及提取到的文本內容和/或圖片內容進行統一編碼格式轉換,並建立文件搜索索引。
可選地,提取模塊包括:分類單元,用於根據更新文件集合中包含的每個文件的文件名稱後綴進行分類;提取單元,用於從分類後未包含圖片信息的第一類型文件中提取文本內容,和/或,從分類後包含圖片信息的第二類型文件中分別提取圖片內容或者提取文本內容和圖片內容。
可選地,處理模塊包括:第一處理單元,用於判斷文件屬性信息集合所採用的編碼格式與預定義的編碼格式是否相同,如果不同,則將文件屬性信息集合所採用的編碼格式轉換為預定義的編碼格式;第二處理單元,用於判斷文本內容所採用的編碼格式與預定義的編碼格式是否相同,如果不同,則將文本內容所採用的編碼格式轉換為預定義的編碼格式;和/或,從圖片內容中提取圖像特徵,並判斷圖像特徵所採用的編碼格式與預定義的編碼格式是否相同,如果不同,則將圖像特徵所採用的編碼格式轉換為預定義的編碼格式。
可選地,處理模塊包括:第三處理單元,用於當提取到文本內容時,在採用統一編碼後的文本內容與文件屬性信息集合之間建立關聯索引,並在與圖片內容對應的欄位填入空字符串;或者,當提取到圖片內容時,在採用統一編碼後的圖片內容與文件屬性信息集合之間建立關聯索引,並在與文本內容對應的欄位填入空字符串;或者,當提取到文本內容和圖片內容時,在採用統一編碼後的文本內容、圖片內容和文件屬性信息集合三者之間建立關聯索引。
可選地,上述裝置還包括:接收模塊,用於接收來自於用戶終端的文本搜索信息和/或圖片搜索信息,其中,文本搜索信息和/或圖片搜索信息均採用預定義的編碼格式,文本搜索信息是從用戶在用戶終端輸入的文本信息中提取的一個或多個關鍵詞且文本信息包括以下至少之一:文件本身包含的字符內容、文件屬性信息集合中的部分或全部文件屬性信息,圖片搜索信息從用戶在用戶終端輸入的圖片信息中提取的圖像特徵;查找模塊,用於採用文件搜索索引查找與文本搜索信息對應的第一備選文本集合,和/或,與圖片搜索信息對應的第二備選文件集合,和/或,與文本搜索信息和圖片搜索信息對應的第三備選文件集合,其中,第一備選文本集合和第二備選文件集合中包含的文件數量為預先自定義,第三備選文件集合是由文本搜索信息對應的搜索結果與圖片搜索信息對應的搜索結果進行邏輯與操作後得到的。
可選地,上述裝置還包括:反饋模塊,用於向用戶終端返回第一備選文本集合、第二備選文件集合與第三備選文件集合中至少之一,其中,第一備選文本集合中的文件按照關鍵詞匹配度由高到低進行排列,第二備選文本集合中的文件按照圖像特徵距離匹配度由高到低進行排列,在向用戶終端返回第三備選文件集合時,優先顯示第三備選文件集合。
可選地,更新文件集合為預設文件存儲區域內存儲的部分或全部文件在不同版本號之間發生過更新的文件。
可選地,文件屬性信息集合包括以下至少之一:對文件進行更新的人員信息;文件更新時間;文件更新後的版本號;文件更新的日誌信息;文件更新方式,其中,文件更新方式包括以下之一:新增文件、修改文件、刪除文件。
在本發明實施例中,採用從預設文件存儲區域獲取更新文件集合以及更新文件集合中每個文件對應的文件屬性信息集合併從更新文件集合的每個文件中分別提取文本內容和/或圖片內容的方式,通過對獲取到的文件屬性信息集合以及提取到的文本內容和/或圖片內容進行統一編碼格式轉換,並建立文件搜索索引,達到了不僅可以針對文件名稱或者路徑進行檢索,而且還可以提取文件中的文本內容和/或圖片內容,對文本內容和/或圖片內容建立索引,另外還進一步支持根據文件屬性信息集合進行檢索的目的,從而實現了提升檢索效率和準確率的技術效果,進而解決了相關技術中所提供的文件搜索方案無法提供單獨通過圖片進行搜索或圖文信息結合的搜索方式,而且還未考慮到在搜索過程中結合文件更新的屬性信息進行搜索的技術問題。
附圖說明
此處所說明的附圖用來提供對本發明的進一步理解,構成本申請的一部分,本發明的示意性實施例及其說明用於解釋本發明,並不構成對本發明的不當限定。在附圖中:
圖1是根據本發明實施例的文件搜索方法的流程圖;
圖2是根據本發明實施例的文件搜索裝置的流程圖;
圖3是根據本發明優選實施例的文件搜索裝置的流程圖。
具體實施方式
為了使本技術領域的人員更好地理解本發明方案,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分的實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都應當屬於本發明保護的範圍。
需要說明的是,本發明的說明書和權利要求書及上述附圖中的術語「第一」、「第二」等是用於區別類似的對象,而不必用於描述特定的順序或先後次序。應該理解這樣使用的數據在適當情況下可以互換,以便這裡描述的本發明的實施例能夠以除了在這裡圖示或描述的那些以外的順序實施。此外,術語「包括」和「具有」以及他們的任何變形,意圖在於覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統、產品或設備不必限於清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或對於這些過程、方法、產品或設備固有的其它步驟或單元。
根據本發明實施例,提供了一種文件搜索方法的實施例,該方法可以適用於基於python的flask框架開發的web應用程式,主要包括:在伺服器端提供索引的建立功能以及在客戶端提供搜索功能。需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計算機可執行指令的計算機系統中執行,並且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同於此處的順序執行所示出或描述的步驟。
圖1是根據本發明實施例的文件搜索方法的流程圖,如圖1所示,該方法包括如下步驟:
步驟S10,從預設文件存儲區域獲取更新文件集合以及更新文件集合中每個文件對應的文件屬性信息集合;
步驟S12,從更新文件集合的每個文件中分別提取文本內容和/或圖片內容;
步驟S14,對獲取到的文件屬性信息集合以及提取到的文本內容和/或圖片內容進行統一編碼格式轉換,並建立文件搜索索引。
通過上述步驟,可以採用從預設文件存儲區域獲取更新文件集合以及更新文件集合中每個文件對應的文件屬性信息集合併從更新文件集合的每個文件中分別提取文本內容和/或圖片內容的方式,通過對獲取到的文件屬性信息集合以及提取到的文本內容和/或圖片內容進行統一編碼格式轉換,並建立文件搜索索引,達到了不僅可以針對文件名稱或者路徑進行檢索,而且還可以提取文件中的文本內容和/或圖片內容,對文本內容和/或圖片內容建立索引,另外還進一步支持根據文件屬性信息集合進行檢索的目的,從而實現了提升檢索效率和準確率的技術效果,進而解決了相關技術中所提供的文件搜索方案無法提供單獨通過圖片進行搜索或圖文信息結合的搜索方式,而且還未考慮到在搜索過程中結合文件更新的屬性信息進行搜索的技術問題。
上述更新文件集合為預設文件存儲區域內存儲的部分或全部文件在不同版本號之間發生過更新的文件。
通過在服務端設置SVN版本庫,其用於存儲全部被檢索的文件,利用SVN版本管理功能(基於PySVN實現)可以從SVN版本庫中獲取在對當前版本文件與先前版本之間進行比較後,發生更新的一個或多個文件,得到文件列表(即上述更新文件集合)。
上述文件屬性信息集合可以包括但不限於以下至少之一:
(1)對文件進行更新的人員信息;
(2)文件更新時間;
(3)文件更新後的版本號;
(4)文件更新的日誌信息;
(5)文件更新方式,其中,文件更新方式包括以下之一:新增文件、修改文件、刪除文件。
此外,在建立索引的過程中,除了加入文件的文本內容和圖片內容之外,還需要從SVN版本庫中獲取每個更新後文件對應的提交人員信息、提交時間、版本編號、用戶輸入的提交日誌信息。這部分信息單獨加以存儲,並且直接用於後續統一編碼和索引建立。
例如:用戶userA已經提交對文件fileA的修改,其修改時間為dateA,用戶userA為本次文件提交隨附的日誌為logA,這是用戶的第2次修改。那麼在監測到這次修改之後,便會顯示並記錄以下信息:
{提交者:userA,提交文件:fileA,修改時間:dateA,日誌:logA,版本號:2,修改類型:Modify}。
由於後續處理只需對發生更新的文件建立索引,而無需對全部文件進行處理,因此提高了索引建立和更新的效率。另外,由於建立索引的過程不僅為文件內容建立索引,而且還為每個文件的屬性信息建立索引,由此既可以滿足用戶通過文件內容來搜索的需求,又可以滿足用戶通過屬性信息(例如:SVN日誌)來進行搜索的需求。
在優選實施過程中,還可以從SVN版本庫中獲取該文件的更新方式,其可以包括但不限於以下至少之一:
方式一、在文件列表中新增一條文件記錄;
方式二、定位到文件列表中特定文件對應的條目進行修改;
方式三、對文件列表中的特定文件停止更新,只保留其歷史記錄。
考慮到更新類型決定後續對於這條索引的處理方式,此處定義三個狀態符號分別為Modify,Add,Del,其中,Modify表示修改,代表特定文件對應的信息在後續處理過程中執行更新操作,Add表示新增,代表特定文件是新增的文件,後續的操作需要增加特定文件的信息,Del表示刪除,代表特定文件對應的記錄需要在系統中停止更新,而僅保留先前記錄的版本信息。
可選地,在步驟S12中,從更新文件集合的每個文件中分別提取文本內容和/或圖片內容可以包括以下執行步驟:
步驟S120,根據更新文件集合中包含的每個文件的文件名稱後綴進行分類;
步驟S121,從分類後未包含圖片信息的第一類型文件中提取文本內容,和/或,從分類後包含圖片信息的第二類型文件中分別提取圖片內容或者提取文本內容和圖片內容。
根據文件名稱的後綴可以將不同類型文件進行分類,並針對不同分類採用對應的處理方式進行文件信息提取。具體地,根據文件名稱的後綴可以將文件具體劃分為:
(1)文本文件:後綴為txt、js、py、html、xml等,其處理方式為:直接讀取文件中的文本內容,如果出現不可讀,則忽略這個文件。
(2)圖片文件:後綴為jpg、bmp、png等,其處理方式為:直接進行後續圖像特徵處理。
(3)pdf文件:後綴為pdf,其處理方式為:利用python的pdfminer功能組件來提取pdf文件的文本內容和圖片內容,對於圖片部分需要進行後續圖像特徵處理。
(4)excel文件:後綴為xlsx或者xls,其處理方式為:採用python的xlrd功能組件來提取excel的文本內容和圖片內容,對於圖片部分需要進行後續圖像特徵處理。
(5)word文件:後綴為doc或者docx,其處理方式為:採用python的docx功能組件來提取word的文本內容和圖片內容,對於圖片部分需要進行後續圖像特徵處理。
此外,其他類型的文件將統一採用與文本文件相同的處理方式。
可選地,在步驟S14中,對文件屬性信息集合以及文本內容和/或圖片內容進行統一編碼格式轉換可以包括以下執行步驟:
步驟S140,判斷文件屬性信息集合所採用的編碼格式與預定義的編碼格式是否相同,如果不同,則將文件屬性信息集合所採用的編碼格式轉換為預定義的編碼格式;
步驟S141,判斷文本內容所採用的編碼格式與預定義的編碼格式是否相同,如果不同,則將文本內容所採用的編碼格式轉換為預定義的編碼格式;和/或,從圖片內容中提取圖像特徵,並判斷圖像特徵所採用的編碼格式與預定義的編碼格式是否相同,如果不同,則將圖像特徵所採用的編碼格式轉換為預定義的編碼格式。
在優選實施例中,可以採用預設圖片特徵提取算法提取圖像特徵,其能夠將一幅圖像採用一組特徵描述算子來表示。對於單獨的圖片文件,可以直接從圖片內容中提取圖像特徵,再結合上述文件屬性信息集合,進行統一編碼後建立索引。對於文件中的圖片,將同樣採用上述預設圖片特徵提取算法提取圖像特徵,然後將圖像特徵、文件中的文本內容以及上述文件屬性信息集合進行統一編碼後建立索引。
對於圖片文件或者包含圖片的文件,對圖片進行特徵提取,採用圖像特徵代替圖片文件,由於只保留特徵信息而不是圖像的每個像素點,因此,極大地減少了存儲空間,提高了檢索效率。
例如:圖片文件的尺寸為n×n大小,其中,n表示像素個數;該圖片文件需要佔用的存儲空間即為n×n個像素所需要佔用的存儲空間,其檢索需要比較的樣本點數同樣為n×n個。而通過特徵提取,可以採用一組特徵向量來表示該圖片文件,特徵向量大小為m×1,其中,m表示特徵向量個數。考慮到在通常情況下,m將遠小於n×n,由此可以較為明顯地降低存儲空間的佔用,提升搜索效率。
另外,不同的文件字符可能分別採用不同的編碼方式,常見的編碼方式可以包括但不限於:Unicode、ASCII、GBK、GB2312、UTF-8。對於相同的文本內容而言,如果分別採用不同的編碼方式,則用戶終端會將兩者識別為不同內容。但是對於文本內容搜索而言,並不關注文本的編碼方式,如果不對文本進行統一的編碼,易造成搜索過程可能因為編碼不同導致搜索不到對應文件,進而降低搜索的準確性。然而,如果在搜索過程中,對於每個文件搜索,都針對不同的文本進行編碼識別和轉碼,又會帶來額外的時間開銷。因此,需要對文本中的字符進行統一編碼。
在本發明所提供的優選實施例中,採用的文本編碼為Unicode,統一編碼的處理方式如下:
(1)對於佔用較小存儲空間的文件,讀取全部文件內容;對於佔用較大存儲空間的文件,讀取該文件中的預設行數文本(例如:前三行文本),並標記為S。
(2)採用python的chardet功能組件檢測S的編碼方式,作為該文本的編碼方式。文本文件通常全文採用同一種編碼方式,對於幾萬行至更多行的較大文件,只抽樣前幾行進行編碼方式識別,可以降低內存消耗,同時提高檢測速度。
(3)如果(2)中檢測到的文本編碼並非是Unicode,那麼需要將文本統一編碼為Unicode。
可選地,在步驟S14中,建立文件搜索索引還可以包括以下執行步驟:
步驟S142,當提取到文本內容時,在採用統一編碼後的文本內容與文件屬性信息集合之間建立關聯索引,並在與圖片內容對應的欄位填入空字符串;或者,當提取到圖片內容時,在採用統一編碼後的圖片內容與文件屬性信息集合之間建立關聯索引,並在與文本內容對應的欄位填入空字符串;或者,當提取到文本內容和圖片內容時,在採用統一編碼後的文本內容、圖片內容和文件屬性信息集合三者之間建立關聯索引。
採用全文搜尋引擎whoosh對每個文件中提取的文本,文本中的圖片特徵和文件屬性信息集合進行新增索引、索引內容更新或者索引內容停止更新操作。索引中缺失的欄位默認存入空字符串即可,例如:對於單純的圖片文件,文件中沒有文本內容,該欄位存入空字符串即可。
可選地,在步驟S14,對文件屬性信息集合以及文本內容和/或圖片內容進行統一編碼格式轉換,並建立文件搜索索引之後,還可以包括以下執行步驟:
步驟S15,接收來自於用戶終端的文本搜索信息和/或圖片搜索信息,其中,文本搜索信息和/或圖片搜索信息均採用預定義的編碼格式,文本搜索信息是從用戶在用戶終端輸入的文本信息中提取的一個或多個關鍵詞且文本信息包括以下至少之一:文件本身包含的字符內容、文件屬性信息集合中的部分或全部文件屬性信息,圖片搜索信息從用戶在用戶終端輸入的圖片信息中提取的圖像特徵;
步驟S16,採用文件搜索索引查找與文本搜索信息對應的第一備選文本集合,和/或,與圖片搜索信息對應的第二備選文件集合,和/或,與文本搜索信息和圖片搜索信息對應的第三備選文件集合,其中,第一備選文本集合和第二備選文件集合中包含的文件數量為預先自定義,第三備選文件集合是由文本搜索信息對應的搜索結果與圖片搜索信息對應的搜索結果進行邏輯與操作後得到的。
用戶不僅可以選擇輸入文字進行檢索,服務端會根據用戶的輸入自動選擇利用文本信息進行搜索;用戶而且可以選擇輸入圖片進行檢索,服務端會根據用戶的輸入自動選擇利用圖像特徵進行搜索;此外,用戶還可以選擇輸入結合文字和圖片進行檢索,服務端會根據用戶的輸入自動選擇利用結合圖像特徵和文本信息進行搜索
對於輸入的文本信息,服務端或用戶終端可以利用python的結巴分詞功能組件提取文本中的關鍵詞,然後將關鍵詞變為為當前系統建立索引使用的統一編碼,此處使用的統一編碼方式為Unicode,然後利用關鍵詞在文本索引中進行搜索。
如果輸入的是圖片信息,則首先利用服務端或用戶終端進行特徵提取,其次將其編碼為Unicode,然後在圖像特徵索引中進行搜索,以查找關聯的圖片文件或者是包含該圖片的word、excel、pdf等類型文件。
如果輸入的是圖片和文本的組合信息,服務端將分別按照文本和圖片的搜索的處理方式進行檢索,以獲取圖片搜索結果和文本搜索的結果。
對於不同的文件進行統一編碼,不但可以提高檢索的正確性,同時還可以減少搜索內容在不同編碼類型之間轉換的時間開銷。
可選地,在步驟S16,採用文件搜索索引查找第一備選文本集合和/或第二備選文件集合之後,還可以包括以下執行步驟:
步驟S17,向用戶終端返回第一備選文本集合、第二備選文件集合與第三備選文件集合中至少之一,其中,第一備選文本集合中的文件按照關鍵詞匹配度由高到低進行排列,第二備選文本集合中的文件按照圖像特徵距離匹配度由高到低進行排列,在向用戶終端返回第三備選文件集合時,優先顯示第三備選文件集合。
在結果的顯示方面,搜索的結果優先顯示文本特徵檢索命中並且圖像特徵檢索命中的結果,其次,依次顯示M個圖像特徵檢索命中,但文本關鍵字檢索未命中的結果,再次,依次顯示N個文本關鍵字檢索命中,但圖像特徵檢索未命中的結果,其中,M和N可以由用戶自定義。具體地,對於純文本的搜索方式,關鍵字匹配越多的文件排在最前面。對於圖片檢索的方式,圖片特徵距離越短,表明圖片越相似,則優先顯示。對於圖片加文本組合的搜索方式,對於圖片搜索結果和文本搜索結果進行邏輯與的操作,優先顯示,然後優先顯示圖片特徵檢索命中的M個文件,和文本關鍵字檢索命中的N個文件。
根據本發明實施例,提供了一種文件搜索裝置的實施例,圖2是根據本發明實施例的文件搜索裝置的流程圖。如圖2所示,該裝置包括:獲取模塊10,用於從預設文件存儲區域獲取更新文件集合以及更新文件集合中每個文件對應的文件屬性信息集合;提取模塊20,用於從更新文件集合的每個文件中分別提取文本內容和/或圖片內容;處理模塊30,用於對獲取到的文件屬性信息集合以及提取到的文本內容和/或圖片內容進行統一編碼格式轉換,並建立文件搜索索引。
上述更新文件集合為預設文件存儲區域內存儲的部分或全部文件在不同版本號之間發生過更新的文件。
上述文件屬性信息集合可以包括但不限於以下至少之一:
(1)對文件進行更新的人員信息;
(2)文件更新時間;
(3)文件更新後的版本號;
(4)文件更新的日誌信息;
(5)文件更新方式,其中,文件更新方式包括以下之一:新增文件、修改文件、刪除文件。
可選地,圖3是根據本發明優選實施例的文件搜索裝置的流程圖。如圖3所示,提取模塊20可以包括:分類單元200,用於根據更新文件集合中包含的每個文件的文件名稱後綴進行分類;提取單元202,用於從分類後未包含圖片信息的第一類型文件中提取文本內容,和/或,從分類後包含圖片信息的第二類型文件中分別提取圖片內容或者提取文本內容和圖片內容。
可選地,如圖3所示,處理模塊30可以包括:第一處理單元300,用於判斷文件屬性信息集合所採用的編碼格式與預定義的編碼格式是否相同,如果不同,則將文件屬性信息集合所採用的編碼格式轉換為預定義的編碼格式;第二處理單元302,用於判斷文本內容所採用的編碼格式與預定義的編碼格式是否相同,如果不同,則將文本內容所採用的編碼格式轉換為預定義的編碼格式;和/或,從圖片內容中提取圖像特徵,並判斷圖像特徵所採用的編碼格式與預定義的編碼格式是否相同,如果不同,則將圖像特徵所採用的編碼格式轉換為預定義的編碼格式。
可選地,如圖3所示,處理模塊30還可以包括:第三處理單元304,用於當提取到文本內容時,在採用統一編碼後的文本內容與文件屬性信息集合之間建立關聯索引,並在與圖片內容對應的欄位填入空字符串;或者,當提取到圖片內容時,在採用統一編碼後的圖片內容與文件屬性信息集合之間建立關聯索引,並在與文本內容對應的欄位填入空字符串;或者,當提取到文本內容和圖片內容時,在採用統一編碼後的文本內容、圖片內容和文件屬性信息集合三者之間建立關聯索引。
可選地,如圖3所示,上述裝置還可以包括:接收模塊40,用於接收來自於用戶終端的文本搜索信息和/或圖片搜索信息,其中,文本搜索信息和/或圖片搜索信息均採用預定義的編碼格式,文本搜索信息是從用戶在用戶終端輸入的文本信息中提取的一個或多個關鍵詞且文本信息包括以下至少之一:文件本身包含的字符內容、文件屬性信息集合中的部分或全部文件屬性信息,圖片搜索信息從用戶在用戶終端輸入的圖片信息中提取的圖像特徵;查找模塊50,用於採用文件搜索索引查找與文本搜索信息對應的第一備選文本集合,和/或,與圖片搜索信息對應的第二備選文件集合,和/或,與文本搜索信息和圖片搜索信息對應的第三備選文件集合,其中,第一備選文本集合和第二備選文件集合中包含的文件數量為預先自定義,第三備選文件集合是由文本搜索信息對應的搜索結果與圖片搜索信息對應的搜索結果進行邏輯與操作後得到的。
可選地,如圖3所示,上述裝置還可以包括:反饋模塊60,用於向用戶終端返回第一備選文本集合、第二備選文件集合與第三備選文件集合中至少之一,其中,第一備選文本集合中的文件按照關鍵詞匹配度由高到低進行排列,第二備選文本集合中的文件按照圖像特徵距離匹配度由高到低進行排列,在向用戶終端返回第三備選文件集合時,優先顯示第三備選文件集合。
上述本發明實施例序號僅僅為了描述,不代表實施例的優劣。
在本發明的上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。
在本申請所提供的幾個實施例中,應該理解到,所揭露的技術內容,可通過其它的方式實現。其中,以上所描述的裝置實施例僅僅是示意性的,例如所述單元的劃分,可以為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分布到多個單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以採用硬體的形式實現,也可以採用軟體功能單元的形式實現。
所述集成的單元如果以軟體功能單元的形式實現並作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中。基於這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟體產品的形式體現出來,該計算機軟體產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可為個人計算機、伺服器或者網絡設備等)執行本發明各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:U盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、移動硬碟、磁碟或者光碟等各種可以存儲程序代碼的介質。
以上所述僅是本發明的優選實施方式,應當指出,對於本技術領域的普通技術人員來說,在不脫離本發明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發明的保護範圍。