2011-03-23 90 views
0

在露天我需要編寫一個lucene查詢,這樣它必須在搜索時從內容中消除/排除xml標籤。Lucene查詢消除全文搜索中的xml標籤

示例如果根據內容搜索文件try.xml,我的搜索不應該搜索xml標記。

try.xml 
<sample>This is an example</sample> 

如果我將搜索文本作爲「sample」,它不應該返回文件名「try.xml」。 那麼我怎麼能做到這一點?

編輯

我試着用下面的查詢並沒有改變。

@cm\:name:"try*" -TEXT:"<*>" +TEXT:"sample" 

上述查詢有什麼問題。我試圖獲得以「try」開頭的文件名,並刪除標籤內的文本,並嘗試搜索文本「sample」。

回答

0

有做你需要的東西沒有標準的方法,這裏的official documentation的摘錄:

通配符查詢,通配符查詢 使用*和?支持作爲條款和 短語。對於標記字段, 模式匹配不能精確,因爲所有 非標記字符(空格, 標點符號等)將會丟失 並視爲相等。

基本上,尖括號在默認情況下被除去。您需要破解索引和查詢解析過程以啓用您想要的行爲。

1

默認情況下,Alfresco將XML文件視爲純文本,並將xml標籤作爲單詞進行索引,這就是爲什麼可以通過全文搜索找到它們的原因。 XML內容由Alfresco中的StringExtractingContentTransformer處理,它在將索引編譯之前將text/xml轉換爲text/plain。

要檢查哪些變壓器註冊在露天安裝,您可以檢查 http://localhost:8080/alfresco/service/mimetypes?mimetype=text/xml#text/xml

爲了防止XML的索引屬性,你必須寫剝離了XML標籤特殊的變壓器。請參閱http://wiki.alfresco.com/wiki/Content_Transformations瞭解有關使用Alfresco進行內容轉換的介紹。最簡單的方法是集成一個將xml文件轉換爲文本的命令行工具,或者您可以實現一個執行轉換的java類。