เมื่อเราสร้าง Custom Content Model บน Alfresco ไม่ว่าจะเป็นรูปแบบ Content-Type หรือ Aspect ก็ตาม เราจะไม่สามารถค้นหาข้อมูลที่บันทึกใน Custom Field เหล่านั้นได้ด้วยวิธีปกติ
ถ้าหากต้องการค้นหา เราต้องระบุ Custom Field ที่เราต้องการค้นหาลงในช่องค้นหาด้วย ดังรูปตัวอย่าง
จากตัวอย่าง เราจะต้องจำ pattern ของทุกๆ Custom Field ได้ทั้งหมด ซึ่งดูไม่ค่อยสะดวกที่จะใช้ในการค้นหาเท่าไร เราจึงจะมาแก้ปัญหาตรงนี้กัน โดยการกำหนดให้การค้นหาในส่วนนี้ ใส่ pattern ของ Custom Field ทั้งหมดที่ต้องการให้ระบบค้นหาได้ลงไปเป็นค่า Default เลย
ขั้นตอนจะแบ่งออกเป็น 2 ส่วนใหญ่ๆ คือ
1. คอนฟิค Custom Field ที่ต้องการค้นหาเป็นค่า Default
ไฟล์ Config นี้ Alfresco จัดเตรียมให้เราไว้ อยู่ที่ path <alfresco path>/tomcat/webapps/alfresco/WEB-INF/lib ในพาร์ธนี้ เราจะพบไฟล์ .jar มากมายที่ Alfresco จัดเตรียมไว้ให้ ในที่นี้ให้มองหาไฟล์ที่ชื่อว่า alfresco-share-services-5.2.f.jar
ให้เราแตกไฟล์ .jar ออกมา โดยใช้คำสั่ง unzip (หากไม่มีคำสั่งนี้ ให้ติดตั้งก่อนด้วยคำสั่ง apt-get install unzip) จากนั้นเราจะเจอโฟลเดอร์ชื่อว่า alfresco ปรากฎขึ้นมาในพาร์ธที่เราอยู่นี้
$ unzip e alfresco-share-services-5.2.f.jar
ให้เข้าไป alfresco/templates/webscripts/org/alfresco/slingshot/search จะพบไฟล์ตัวอย่างซึ่งเราจะสนใจแค่ 2 ไฟล์คือ live-search-docs.get.config.xml กับ search.get.config.xml
ให้เราคัดลอกไฟล์ทั้งสองนี้ ไปยัง path <alfresco path>/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/extension/templates/webscripts/org/alfresco/slingshot/search
เมื่อคัดลอกเรียบร้อยแล้ว ให้แก้ไขไฟล์ทั้งสอง ดังตัวอย่างต่อไปนี้
live-search-docs.get.config.xml
<search>
<default-operator>AND</default-operator>
<default-query-template>%
(cm:name cm:title cm:description oic:caseNumber TEXT TAG)
</default-query-template>
</search>
search.get.config.xml
<search>
<default-operator>AND</default-operator>
<default-query-template>%
(cm:name cm:title cm:description ia:whatEvent ia:descriptionEvent lnk:title lnk:description oic:caseNumber TEXT TAG)
</default-query-template>
</search>
จากตัวอย่าง ให้ทำการปรับเปลี่ยนค่าตรงที่ hi-light สีไว้ เป็นชื่อ Custom Field ตามที่เราได้กำหนดไว้ใน Custom Content Model ของเรา
2. แก้ไขไฟล์ share-config-custom.xml
หลังจากทำขั้นตอนแรกเสร็จสิ้น ให้ไปยัง path <alfresco path>/tomcat/shared/classes/alfresco/web-extension/ แล้วแก้ไขไฟล์ที่ชื่อว่า share-config-custom.xml
ในการแก้ไขให้แยกเป็น 2 กรณี กรณีที่ 1 Content Model ที่สร้างเป็น Content-Type โดยกรณีที่เราสร้าง Custom Model ในรูปแบบ Content-Type ให้เราทำการแก้ไขในส่วนของ Code ตามตัวอย่างด้านล่างนี้
....
<types>
<type name=”cm:content”>
<subtype name=”oic:lawyers”/>
</type>
<type name=”cm:folder”>
</type>
<type name=”trx:transferTarget”>
<subtype name=”trx:fileTransferTarget” />
</type>
</types>
....
โดยให้เปลี่ยนค่าตรงส่วนที่ hi-light สีไว้เป็นชื่อ Content-Type ที่เราได้สร้างไว้แทน โดยใส่ไว้ในประเภทให้ถูกต้องว่า Content-Type ที่สร้างนั้นใช้กับ cm:content (ไฟล์) หรือ cm:folder (โฟลเดอร์)
กรณีที่ 2 Content-Model ที่สร้างเป็น Aspect โดยกรณีนี้ให้เราทำการแก้ไขในส่วนของ Code ตามตัวอย่างด้านล่างนี้
....
<aspects>
<!-- Aspects that a user can see -->
<visible>
<aspect name="cm:generalclassifiable" />
<aspect name="cm:complianceable" />
<aspect name="cm:dublincore" />
<aspect name="cm:effectivity" />
<aspect name="cm:summarizable" />
<aspect name="cm:versionable" />
<aspect name="cm:templatable" />
<aspect name="cm:emailed" />
<aspect name="emailserver:aliasable" />
<aspect name="cm:taggable" />
<aspect name="app:inlineeditable" />
<aspect name="cm:geographic" />
<aspect name="exif:exif" />
<aspect name="audio:audio" />
<aspect name="cm:indexControl" />
<aspect name="dp:restrictable" />
<aspect name="smf:customConfigSmartFolder" />
<aspect name="smf:systemConfigSmartFolder" />
<aspect name="oic:lawyers" />
</visible>
<!-- Aspects that a user can add. Same as "visible" if left empty -->
<addable>
</addable>
<!-- Aspects that a user can remove. Same as "visible" if left empty -->
<removeable>
</removeable>
</aspects>
....
โดยให้เราเปลี่ยนข้อความตรงที่ hi-light สีไว้เช่นเดียวกันกับกรณีที่ 1
เมื่อทำตามขั้นตอนทั้งหมดเรียบร้อยแล้ว ให้ Restart Alfresco Service เมื่อระบบกลับมาทำงาน เราก็จะสามารถค้นหาโดยใส่แค่ keyword ที่ต้องการได้แล้วครับ