2010-06-27 152 views
0

我有一個關於使用apache solr/lucene的架構問題。非規範化關係數據lucene/solr

我正在構建用於搜索CV數據庫的索引索引。基本上,在那裏每個品種都會有像一些領域:

企薪酬,地址,標題

這些字段是直線前進。我需要諮詢的領域是技能和工作經歷。 對於技能,有人可能會添加一個條目,如:C# - 5年,Java - 9年

所以基本上有N個技能,每個都有一個字符串名稱和一個int年數。 我想我可以用一個充滿活力的領域,* _skill,並可能增加他們像這樣:

1_skill:C#,2_skill:Java的

但哪能指數多年的經驗?我會再加入一個充滿活力的領域,如:

1_skill_years:5,2_skill_years:9

有沒有人做過類似的事情? 任何幫助非常感謝?

關於

回答

0

而不是動態字段,您可以使用多值字段。您確實知道多個值可以存在於同一個字段中。因此,像

<Skill> Java 
<Skill> Solr 

+0

是的我熟悉MVF的,它將是完美的,如果它只是技能的名稱,但問題是如何包括年數的經驗。 即,如果我要用5年的經驗搜索Java,它需要在兩個不同的領域捕獲。最終我希望能夠面向和排序某人擁有技能的年數。 – mickdelaney 2010-06-28 08:45:31

+0

@mickdelaney,你有沒有得到任何解決你的技能與年問題? – 2011-12-07 12:34:14

1

多值字段維護訂購,所以你可以有技巧多值字段,另一個用於多年的經驗。當你閱讀他們時,只需將他們按照他們的順序關聯起來。

如果您有空值或空值,請注意。您必須使用特殊標記對其進行編碼,因爲空字符串或空值不會被編入索引,這將改變排序。

UPDATE
不幸的是,它不是在Solr中可以通過一個多值字段進行排序。看到這個鏈接的解釋: http://lucene.472066.n3.nabble.com/performance-sorting-multivalued-field-td905943.html

+0

我將如何根據另一個字段中的值對查詢進行排序。 即Java的5年工作經驗 如果 技能:JAVA(指數2) skill_years:5(指數2) 是有可能對我進行排序,這些值方面,當它們存儲這樣嗎? – mickdelaney 2010-06-28 16:42:55

+0

不,Solr無法在多值字段上排序。 – 2010-06-28 19:13:27