2013-04-18 90 views
0

頁特定排除我已經從搜索results.Using下面的代碼是否有任何其他的替代模板從搜索

map.put("group.1_group.1_property","**jcr:content/cq:template**"); 
map.put("group.1_group.1_property.1_value","**/apps/MyApp/templates/SampleTemplate**"); 


map.put("group.1_group.1_property.and","true"); 
map.put("group.1_group.1_property.operation","unequals"); 

final Query finalQuery = builder.createQuery(PredicateGroup.create(map), 
        session); 

,這意味着它沒有得到明顯的限制類似的管理頁面的某些頁面模板是特定的搜索過濾,這意味着我告訴查詢構建器不要顯示具有上述指定模板的頁面。但缺點是未來如果我們想限制更多頁面,那些頁面也必須映射到上面的模板。因此,我們可以將中的任何其他屬性放在地圖中,以便搜索限制不是模板特定的,而不是在地圖中指定模板。 謝謝, Balaji

回答

1

您的網頁有哪些其他屬性(特別是管理頁面)?例如,如果您有添加到管理頁面的特定屬性或可以排序的其他頁面,那麼這可能會起作用。在我工作的一個網站上,我們將一個屬性放入了名爲hideInNav的某些內容項中。所以沿着這些路線,這是我將如何做到這一點:

map.put("group.1_group.1_property","jcr:content/hideInNav"); 
map.put("group.1_group.1_property.1_value","/content/somepath/you/want"); 

map.put("group.1_group.1_property.and","true"); 
map.put("group.1_group.1_property.operation","unequals"); 

我希望這有助於理解它。我理解正確嗎?如果沒有,請澄清,我會盡力幫助更多。

---------------編輯-----------------------

如果你不喜歡沒有自定義屬性,但您知道這些頁面所在的路徑,也可能是它們都具有的共同默認屬性(如jcr:title),您可以嘗試這樣做。就像這樣:

map.put(1_group.0_path","/content/yoursite"); 
map.put(2_group.0_type","cq:Page"); 
map.put(3_group.fulltext","test text"); 
map.put(3_group.fulltext.relPath","jcr:content/@jcr:title"); 

你可以看到這是如何在本地查詢調試器,當你有CQ運行運行:

http://localhost:4502/libs/cq/search/content/querydebug.html?_charset_=UTF-8&query=http%3A%2F%2Flocalhost%3A4502%2Fcontent%2Fsalesportal%2Fen%2Fmobile%2Fresources.assets.get.json%3Fp.limit%3D7%0D%0A1_group.0_path%3D%2Fcontent%2Fyoursite%0D%0A2_group.0_type%3Dcq%3APage%0D%0A3_group.fulltext%3Dtest+text%0D%0A3_group.fulltext.relPath%3Djcr%3Acontent%2F%40jcr%3Atitle 

希望這是更有幫助。

編輯#2

這是我的兩個答案的總結,並且有希望回答你最後的評論爲好。

爲了更全面地回答你的問題(因爲你還沒有完全得到你想要的東西),我挖了一些更深的找到你需要的信息。僅僅作爲參考,任何時候你正在做XPath查詢,這是一個很好的工具,看看:JCR Query Usecases - jboss

無論如何,你說你得到的結果,不包括缺少'hideInNav'屬性。這裏是你如何能得到這些結果,具體爲:

map.put("1_group.0_path","/content/yoursite"); 
map.put("2_group.0_type","cq:Page"); 
map.put("3_group.1_property","jcr:content/hideInNav"); 
map.put("3_group.1_property.1_value","not"); 
map.put("3_group.1_property.operation","not"); 

這樣,你搜索你想要的路徑,得到結果的類型你想(CQ:頁,如果這是你在做什麼實際上是在尋找),並且你得到的結果沒有屬性'hideInNav'。

+0

感謝您的Nicholaus,我會嘗試與此並讓您知道謝謝,Balaji – balaji

+0

是的,您是正確的,我遵循您的第一種方法,只是爲了您的信息不知何故,配置有hideInNav屬性的頁面在搜索結果中可見而那些沒有配置hideInNav的搜索結果沒有進入,但它應該反向發生,好吧,我可能在我身邊做了錯誤的事情,但是感謝這個奇妙的方法,歡呼聲 – balaji

+0

雅,搜索現在按預期工作,今天只有我看到了你的第二個答案,非常感謝你 – balaji

相關問題