インデックシングの動作のカスタマイズ
Windchill ビジネスオブジェクトと関連付けられているサーチエンジンインデックス情報を修正できます。
DefaultIndexObjectBuilder の設定
次のような署名を持つメソッドを実装します。protected void setAdditionalAttributes(EPMDocument indexable, TypeInstance ti, WCIndexingObject indexingObject, WTCollection sharedMapCollection) throws WTException
カスタマイズされた DefaultIndexObjectBuilder クラスを使用するには、service.properties ファイルを更新してこの変更を反映する必要があります。
デフォルトエントリは次のとおりです。
# #####################################################
# The wt.index.builder.IndexObjectBuilder service.
# ###########################################################
wt.services/svc/default/wt.index.builder.IndexObjectBuilder/
null/wt.index.Indexable/0=wt.index.builder.DefaultIndexObjectBuilder
/duplicate
この例では、DemoIndexObjectBuilder という名前のカスタム DefaultIndexObjectBuilder をインデックシングに使用するとします。デフォルトの DefaultIndexObjectBuilder をオーバーライドするには、service.properties に次の行を追加する必要があります: wt.services/svc/default/wt.index.builder.IndexObjectBuilder/null/wt.epm.EPMDocument/0=wt.index.builder.DemoIndexObjectBuilder/duplicate
* 
この値は 1 行で入力する必要があります。
setAdditionalAttributes
custom_ setAdditionalAttributes(EPMDocument indexable, TypeInstance ti, WCIndexingObject indexingObject, WTCollection sharedMapCollection) メソッドをオーバーライドし、独自のコードをこのメソッドに追加できます。

import wt.epm.EPMDocument;
import wt.fc.collections.WTCollection;
import wt.index.IndexAttributeInfo;
import wt.index.WCIndexingObject;
import wt.util.WTException;
import com.ptc.core.meta.type.common.TypeInstance;
/**
* Demo IndexObjectBuilder implementation for EPMDocument object type.
*/
public class DemoIndexObjectBuilder extends
DefaultIndexObjectBuilder<EPMDocument> {
/* Override setAdditionalAttributes method to set additional attributes in
* IndexingObject so that it gets indexed to SOLR and is searchable
* The super class already has some implementation, so have to call
* super.setAdditionalAttributes method explicitly Instead we can have a
* custom method that can be overridden and keep it's implementation
* empty in DefaultIndexObjectBuilder
* (non-Javadoc)
* @see wt.index.builder.DefaultIndexObjectBuilder#setAdditionalAttributes
* (wt.index.Indexable, com.ptc.core.meta.type.common.TypeInstance,
* wt.index.WCIndexingObject, wt.fc.collections.WTCollection)
*/
@Override
protected void setAdditionalAttributes(EPMDocument indexable, TypeInstance ti,
WCIndexingObject indexingObject, WTCollection sharedMapCollection)
throws WTException {
//call the setAdditionalAttributes method of super class to keep the
//existing implementation intact
super.setAdditionalAttributes(indexable, ti, indexingObject, sharedMapCollection);
//Get the additional values to be indexed from TypeInstance or any
//other custom implementation
String demoVal = "SOME_VALUE";
//Get the custom for which user wants solr field. Like SOME_ATTRIBUTE
IndexAttributeInfo attributeInfo = getAttributeInfo
("SOME_ATTRIBUTE", demoVal, false);
//If the attribute value needs to be indexed as a separate field in SOLR,
//then add it to unmappedAttInfo list in IndexingObject
indexingObject.addToUnmappedAttInfo(attributeInfo);
//If the attribute value needs to be searchable via keyword, then append the
//value to the metadata field whose content is searchable through keyword
indexingObject.appendMetadataField(demoVal);
}
}
これは役に立ちましたか?