2012-10-30 44 views
0

如果我有兩個記錄到我的SOLR索引中使用相同的電子郵件地址,並且我的關鍵字搜索在結果集中獲得了這兩個記錄,我如何顯示其中的一個。例如;SOLR搜索:消除重複的電子郵件地址

記錄1:

<doc> 
    <id>123</id> 
    <name>Adil Malik</name> 
    <email>[email protected]</email> 
    <jobtitile>Software Engineer</jobtitle> 
</doc> 

記錄2:

<doc> 
    <id>456</id> 
    <name>Adil Malik</name> 
    <email>[email protected]</email> 
    <jobtitile>Database Developer</jobtitle> 
</doc> 

如果我們用 「[email protected]」,它將返回兩個記錄搜索,但我想,以顯示它們中的任何一個。如果我們有2個電子郵件地址相同,如何在SOLR搜索中查詢以僅顯示一條記錄?

注:我想保留兩個記錄到我的SOLR索引。


在回答@Layke

enter image description here

+0

我想在我的索引中保留重複記錄。因爲如果有人用工作職位搜索:「軟件工程師」,或者在「Adil Malik」這兩種情況下都使用「數據庫開發人員」進行搜索時,應該返回 –

+0

但是,如果有人用電子郵件:[email protected],現在SOLR搜索將返回2個記錄,其中id是123和456.在這種情況下,我只想顯示其中的任何一個。 –

回答

8

你應該做FieldCollapsing還取決於Deduplication一些閱讀(重複數據刪除技術可以防止文件進入指數可言,這是不是你想要的,但我在這裏可以幫助其他讀者,這可能是合適的)。

要使用FieldCollapsing,你會用你的查詢,並有group: true , group.field : email

但是,看着你所提供的文件的例子,我可能會說,你設計你的模式錯了,你真正想要做什麼它使用多值字段。

在這裏閱讀這個問題,它可能會解釋/建議你應該如何使用MVF。

What is the use of "multiValued" field type in Solr?

+0

我同意,爲您的jobtitle字段使用multiValued字段類型。 –

+0

關於Schema,基本上當我設計時,我認爲多值是存在的,但由於系統需求,我無法使用它。這是一個非常廣泛的系統,涉及的東西太多,我在這裏無法解釋。爲了處理所有我沒有使用多值的東西,我在SOLR索引中分別保存了每條記錄。 我相信「FieldCollapsing」是我所需要的。但是,當我嘗試它不適合我。我附上了我的問題主體的截圖。請看一下,看看你能不能幫忙。 非常感謝 –

+0

行,fieldCollapsing修復了它。其實我是在版本2我不得不升級到版本4,然後它工作:) 謝謝 –

1

如何使用您的電子郵件字段作爲唯一鍵,以便沒有重複的將被允許? 搜索Wiki頁面<uniqueKey>爲schema.xml中https://wiki.apache.org/solr/SchemaXml

+0

但我想在SOLR索引中保留這兩個記錄。 –

+0

FieldCollapsing可能會幫助您:https://wiki.apache.org/solr/FieldCollapsing –