我已经到了需要存储一些有关 Lucene.Net 索引中特定字段来自何处的附加数据的地步。具体来说,我想在将字段添加到文档时将 guid 附加到文档的某些字段,并在从搜索结果中获取文档时再次检索它。
这可能吗?
Edit:好吧,让我举个例子来澄清一下。
假设我有一个对象,我希望允许用户使用自定义标签(如“个人”、“最喜欢的”、“某些项目”)进行标记。我通过向文档添加多个“标签”字段来实现此目的,如下所示:
doc.Add( new Field( "tag", "personal" ) );
doc.Add( new Field( "tag", "favorite" ) );
问题是我现在需要记录有关每个单独标签本身的一些元数据,特别是代表该标签来自何处的 guid(将其想象为用户 ID)。每个标签可能有不同的 guid,所以我不能简单地创建一个“tag-guid”字段(unless值的顺序被保留——请参阅下面的编辑 2)。我不需要为这些元数据建立索引(事实上,我不希望这样做,以避免元数据被命中),我只需要能够从文档/字段中再次检索它。
doc.GetFields( "tag" )[0].Metadata...
(我在这里编写语法,但我希望我的观点现在已经清楚了。)
Edit 2:
由于这是一个完全不同的问题,我为此方法发布了一个新问题:Lucene中多值字段的顺序稳定吗? https://stackoverflow.com/questions/4951215/is-the-order-of-multi-valued-fields-in-lucene-stable
好吧,让我们尝试另一种方法......关键问题是同一字段名称(例如“标签”)下的多个字段值的不确定性。如果我可以在这里引入或获得某种确定性,我也许可以将元数据存储在另一个字段中。
例如,如果我可以依赖字段值的顺序永远不会改变,我可以使用值集中的索引来准确识别我所引用的标签。
当我稍后检索文档时,是否可以保证向字段添加值的顺序保持不变?