Я дошел до того, что мне нужно хранить некоторые дополнительные данные о том, откуда берется конкретное поле в моем индексе Lucene.Net. В частности, я хочу прикрепить руководство к определенным полям документа, когда поле добавляется в документ, и получить его снова, когда я получу документ из результатов поиска.
Это возможно?
Изменить: Хорошо, позвольте мне немного пояснить, приведя пример.
Допустим, у меня есть объект, который я хочу разрешить пользователю помечать пользовательскими тегами, такими как «личный», «любимый», «какой-то проект». Я делаю это, добавляя в документ несколько полей «тег», например:
doc.Add( new Field( "tag", "personal" ) );
doc.Add( new Field( "tag", "favorite" ) );
Проблема в том, что теперь мне нужно записать некоторые метаданные о каждом отдельном теге, в частности, guid, представляющий, откуда взялся этот тег (представьте, что это идентификатор пользователя). У каждого тега потенциально может быть другой guid, поэтому я не могу просто создать поле «tag-guid» (если порядок значений не будет сохранен — см. редактирование 2 ниже). Мне не нужно, чтобы эти метаданные индексировались (и на самом деле я бы предпочел, чтобы этого не было, чтобы избежать попаданий в метаданные), мне просто нужно иметь возможность снова получить их из документа/поля.
doc.GetFields( "tag" )[0].Metadata...
(Здесь я придумываю синтаксис, но надеюсь, что теперь моя точка зрения ясна.)
Редактировать 2: Поскольку это совершенно другой вопрос, я опубликовал новый вопрос для этого подхода: Является ли порядок многозначных полей в Lucene стабильным?
Хорошо, давайте попробуем другой подход... Ключевой проблемной областью является неопределенность значений нескольких полей под одним и тем же именем поля (например, "тег"). Если бы я мог ввести или получить какую-то определенность здесь, я мог бы хранить метаданные в другом поле.
Например, если бы я мог полагаться на то, что порядок значений поля никогда не изменится, я мог бы использовать индекс в наборе значений, чтобы точно определить, на какой тег я ссылаюсь.
Есть ли какая-либо гарантия, что порядок добавления значений в поле останется прежним, когда я извлеку документ позже?