2015-09-01 29 views
0

我希望我找到一些幫助。我對solr很新,有機會參與談論它。 對於以下情況,即使是擔任談話的顧問也不確定,因此我希望有人遇到同樣的問題。Solr rangesearch字符串中包含字符鏈

我有一個由特定鍵標識的對象列表。例如,目的: 由id's(1-500000)確定有50萬名員工。這些人的每個人都必須在接下來的2年裏工作。這些年份的每一天都由一個角色來標識(員工將工作 - 「A」,員工不會在工作 - 「B」)。所以每個員工都得到一個包含730的字符串,但並不是每個員工都有730個字符(特定的員工稍後加入公司)。

示例串爲僱員256:

AABBAAABAAAABBAB 

=>僱員256將工件2天,1天,他不工作,然後他將工作3天連續1天空閒時間4天,工作,2天不上班,1天上班,1天上門等。

示例串員工542:

ABBAABABAAABAAAABABBAABAAAAABBABBABABBBABAABABBABABABBABAAAA 

示例串員工2:

AAAABABBABABAAAABABABABABA 

對於dispositionpurposes我現在想誰是4天在工作中排走的員工和他們一起吃晚飯

我想收到以下結果:

employee 256 4 days free after day 8 
employee 542 4 days free after day 12, after day 23, after day 56 
employee 2 4 days free after day 0, after day 12 

我希望你得到了我的問題。這個例子只是爲了更好的想象。可以用solr實現解決方案嗎? 其他解決方案方法(也適用於當天代表)非常受歡迎。現在我們依賴於日常表示(每天都有一個字符)。但是,如果您爲我提供高性能解決方案,即使這是可以討論的。項目數量(500000)對於項目來說是真實的。

+0

只是想澄清我的理解:對於字符串'AABBAAABAAAABBAB',你想要連續工作(或不工作)的所有日子將其編入索引。例如AA,BB,AAA,B,AAAA,BB,A,B。後來你想通過提供像AAAA這樣的查詢來搜索索引,這些人連續工作了4天。 – YoungHobbit

+0

是否可以索引整個字符串的子字符串?我認爲只能索引完整的String'AABBAAABAAAABBAB'。但是,是的,你是對的。當然,我不會搜索4天。它可以改變例如14或42天。 –

+0

我不確定任何可以提供此功能的現有過濾器。但是如果你有需求,那麼你可以實現你自己的過濾器,它將按照需求生成令牌,並使用'RemoveDuplicatesTokenFilter'去除重複。 – YoungHobbit

回答

0

我不會將此模型作爲員工進行建模,而是視可用性而定。也許有可用性作爲員工的嵌套/子對象。然後可用性對象將是StartDay,NumberOfDays。

查詢然後變成一個更簡單的連接,條件是子代爲NumberOfDays> = 4。

+0

用這種方法我有問題,只有免費的日子會被考慮。如果我想搜索未來3天的狀態'B'或者如果我想添加一個狀態'C'怎麼辦......與僱員的這個例子不是一個真正的問題,只是轉移了我的真實的概念問題。 –

+0

然後爲該記錄類型添加一個標誌。問題是,您需要在Solr中表示* search domain *。而您的搜索域在這裏是可用性,而不是人。因此,如果您的概念傳輸是正確的,則需要在更高的粒度級別進行索引以利用Solr。請參閱Gilt的演示文稿,瞭解其中的幾個細節:https://www.youtube.com/watch?v = 8CiQatlZC0M –