2014年10月27日 星期一

Solr_05_05_Other Schema Elements

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"/>
    或者是參考SimilarityFactory的實現,但這可能需要可選的初始化參數:

    <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 factoriesJavadocs.

沒有留言:

張貼留言