我想索引使用Lucene的源代碼。源代碼已經使用編譯器插件進行了預分析。編譯器的輸出是出現在源代碼中的ID列表。每個ID包括關於我可以使用Lucene索引源代碼嗎?
- 的ID在定義(相對於所用)的模塊,其中ID出現(即行:COL-線:COL)信息,
- 源跨度,和
- ID是在此位置定義還是僅在此處使用。
例如,假設此源代碼模塊(在僞代碼)
module MyModule
from MyOtherModule import bar
foo = ...
print bar
這裏就是編譯器可能在編譯MyModule
時輸出:
MyModule.foo,3:1-3:3,definition
MyOtherModule.bar,4:7-4:9,use
注意如何將所有的ID出現在輸出中是完全合格的,儘管它們可能不是以這種方式出現在源代碼中。這就是我們使用編譯器的原因,它允許我們執行比純粹基於文本的搜索更精確的代碼搜索。
問題:是否可以編寫索引的方式如上所示的編譯器輸出一個自定義標記生成器和分析器,所述元數據(即,完全合格的ID以及是否ID在給定位置中定義或使用)在對文件進行評分時保持可用狀態?更確切地說,我希望每個術語都與它定義的模塊相關聯(例如,foo
將具有關聯的元數據:定義模塊= MyModule
)。我希望發佈列表中的每個帖子都可以存儲此ID的特定外觀是該定義還是該ID的使用。
此外,我想讓Lucene存儲非合格ID作爲合格ID的同義詞。這將允許用戶搜索「foo」並檢索包含ID「Module1.foo」和「Module2.foo」的所有文檔。
你已經看過自定義屬性了嗎? – mschonaker 2013-04-12 17:50:09