Денормализация реляционных данных для lucene / solr - PullRequest
0 голосов
/ 28 июня 2010

У меня архитектурный вопрос об использовании apache solr / lucene.

Я создаю индекс solr для поиска в базе данных CV.В основном, каждое резюме будет иметь такие поля, как:

ставка заработной платы, адрес, должность

, эти поля являются прямыми.Сфера, в которой я нуждаюсь, - это навыки, опыт работы.Что касается навыков, кто-то может добавить запись типа: C # - 5 лет, Java - 9 лет

Таким образом, существует по существу N навыков, каждое из которых имеет строковое имя и целое число лет.Я думал, что мог бы использовать динамическое поле * _skill и, возможно, добавить их следующим образом:

1_skill: C #, 2_skill: Java

Но как я могу проиндексировать опыт за годы?Затем я бы добавил динамическое поле, например:

1_skill_years: 5, 2_skill_years: 9

Кто-нибудь делал подобные вещи раньше?Любая помощь с благодарностью?

С уважением

Ответы [ 2 ]

1 голос
/ 28 июня 2010

Многозначные поля поддерживают порядок, чтобы вы могли иметь многозначное поле для навыков, а другое - для многолетнего опыта. Когда вы читаете их обратно, просто связывайте их по порядку.

Обратите внимание, если у вас есть нулевое или пустое значение. Вам придется кодировать его с помощью специального маркера, поскольку пустая строка или нулевое значение не будут проиндексированы, и это изменит порядок.

UPDATE
К сожалению, в Solr невозможно отсортировать по многозначному полю. Смотрите эту ссылку для объяснений: http://lucene.472066.n3.nabble.com/performance-sorting-multivalued-field-td905943.html

0 голосов
/ 28 июня 2010

Вместо динамического поля вы можете использовать многозначные поля.Вы знаете, что для одного и того же поля могут существовать несколько значений.Отсюда что-то вроде

<Skill> Java
<Skill> Solr

и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...