Other Schema Elements
schema.xml中其它重要的元素。
Unique Key
在UniqueKey指定哪個field是文件的唯一標識符。儘管UniqueKey並不需要,但是基本上你的應用程序總是有其設計的必要。例如,UniqueKey應該使用在永遠不會更新索引的文件。
你可以透過命名將其中的一個field定義,命名為UniqueKey field:
<uniqueKey>id</uniqueKey>
從Solr4.0開始,schema的預設值和copyFields不能用於填充uniqueKey。也不能使用UUIDUpdateProcessorFactory自動生成具有uniqueKey的值。Further, the operation will fail if the uniqueKey field is used but is multivalued (or inherits the multivalueness from the fieldtype),只要該field被正常使用,依然會正常工作。
Default Search Field
當查詢索引時未指定field,將會指定defaultSearchField做為預設的查詢field,如果field有使用DisMax和擴展DisMax查詢分析器則不可使用。
<defaultSearchField>text</defaultSearchField> -->
不建議在Solr3.6以上的版本中使用。相反的你應該在query中使用df參數。在某些時候,該defaultSearchField元件可以進行刪除。
Query Parser Default Operator
在多種條件之下的查詢,solr可以返回如果所有條件都滿足,或其中一個或多個結果條件得到滿足。操作控制這種行為,就意味著所有條件必需符合,而OR運算元是指一個或一個以上條件為真就會返回結果。如果要控制結果運算,必需在schema.xml中的solrQueryParser元素中控制,如果未開啟未指定此元素,在預設的操作設置僅適用於Lucene的查詢分析器,而不是DisMax或是擴展DixMax的查詢分析器,其內部是採用硬編碼的操作設置導向OR.
<solrQueryParser defaultOperator="OR"/>
不建議在Solr3.6以上的版本中使用。鼓勵在查詢時加入q.op參數代晢solrQueryParser。 Similarity
Similarity 用來尋找score文檔中Lucene的class,這個class提供了一個改變排序規則用的自定義排序。在Solr4可以配置每個field在不同的similarity ,也就是說score分數的高低取決於在每個field。但是你然可以在schema.xml中配置一個全域的similarity設置,其中DefaultSimilarityFactory就是做為一個隱式實例被採取使用的。一個全域的similarity宣告,可以用來指定solr如何處理自定義similarity中索引的處理,similarity可以通過直接引用類名並指定一個無參數的建構函數進行實例化。
<similarity class="solr.DefaultSimilarityFactory"/>
<similarity class="solr.DFRSimilarityFactory"> <str name="basicModel">P</str> <str name="afterEffect">L</str> <str name="normalization">H2</str> <float name="c">7</float> </similarity>
從solr4開始,similarity factories可以在各別的fieldType中指定:<fieldType name="text_ib"> <analyzer/> <similarity class="solr.IBSimilarityFactory"> <str name="distribution">SPL</str> <str name="lambda">DF</str> <str name="normalization">H2</str> </similarity> </fieldType>
在上面這個範例中使用IBSimiarityFactory(使用基於資訊的模型),也可以使用幾個相似的方式進行實現。在Solr4.2版本中另外又添加了SweetSportSimilarityFactory。其它的Factory包括BM25SimilarityFactory、DFRSimilarityFactory、SchemaSimilarityFactory....等其它的factory,詳細的facotry請參考similarity factories的Javadocs.
沒有留言:
張貼留言