Надеюсь, я нахожу помощь. Я довольно новичок в solr и имею возможность участвовать в разговоре об этом. В следующем сценарии даже консультант, который проводил беседу, не был уверен, поэтому я надеюсь, что у кого-то была такая же проблема.Solr rangeearch внутри строк, содержащих цепочки символов
У меня есть список объектов, определенных определенным ключом. Например: Число сотрудников 500000 идентифицировано идентификатором (1-500000). Каждый из этих людей должен работать в течение следующих 2 лет. Каждый день этих лет определяется персонажем (работник будет работать - «А», работник не будет работать - «Б»). Таким образом, каждый сотрудник получил строку, содержащую до 730, но не каждый сотрудник имеет полную сумму 730 символов (конкретный сотрудник присоединился к компании позже или что-то еще).
Пример Строка для сотрудника 256:
AABBAAABAAAABBAB
=> Сотрудник 256 будет работать 2 дня, 1 день он не работает, то он будет работать 3 дня подряд, 1 день FreeTime, 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) является реалистичным для проекта.
Просто хотел прояснить мое понимание: для строки 'AABBAAABAAAABBAB', вы хотите индексировать ее на все дни работы (или нет) непрерывно. например 'AA',' BB', 'AAA',' B', 'AAAA',' BB', 'A',' B'. Позже вы хотите искать индекс, предоставляя такой запрос, как 'AAAA', который люди работали в течение 4 непрерывных дней. – YoungHobbit
Можно ли индексировать подстроки всей строки? Я думал, что возможно только индексировать полную строку 'AABBAAABAAAABBAB'. Но да, вы правы. Конечно, я не буду искать каждый раз в течение 4 дней. Он может измениться, например, до 14 или 42 дней. –
Я не уверен, что существует существующий фильтр, который может обеспечить эту функциональность. Но если у вас есть требование, вы можете реализовать свой собственный фильтр, который будет генерировать токен согласно требованию и использовать 'RemoveDuplicatesTokenFilter' для удаления дубликатов. – YoungHobbit