2010-01-29 34 views
2

我需要將我的SOLR索引分成兩部分。事實證明,我已經有了一個STRING字段,代表我需要的分區信息。意思是,一種將被搜索的記錄是字符串字段存在於記錄中並且包含一個值的地方,另一種是它不包含任何值的地方。所有查詢都必須指定要搜索的分區。現在,使用負面字段查詢(如-strFld:[* TO *])來搜索該字段會更快嗎,還是創建新的布爾字段會更好/更快?將其稱爲「hasStrFld」,然後搜索?因此,當strFld不存在時hasStrFld爲false。同樣,當StrFld中有數據時,hasStrFld爲true。SOLR模式設計問題:字段缺席或布爾字段?

其他考慮事項:將來索引可能被劃分爲第三個分區,使布爾不適合和負面查詢不合適,並且使用枚舉值的字段成爲一個考慮因素的可能性非常低。然而,今天的可能性相當低,今天的快速性能要比明天的可擴展性要大得多。

回答

3

我認爲在實踐中,我可能會考慮在決定之前進行一些測試,但是,如果沒有它們,我很可能會訴諸STRING字段。

  • 它已經存在
  • 有作爲一個特殊的布爾字段沒有這樣的事情(在使用字符串令牌據我瞭解Solr的增加)。

對於速度我會嘗試:

  • 使用它作爲一個過濾器(即FQ),以充分利用相關的緩存機制
  • 升壓/ unboost場得分和排序(而不是分割完全)
  • 多核方法,在覈分區(實際上這可能是易於擴展和易於維護)

希望這有助於秒。