是否可以将自定义元数据添加到 Lucene 字段?

2024-02-08

我已经到了需要存储一些有关 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

好吧,让我们尝试另一种方法......关键问题是同一字段名称(例如“标签”)下的多个字段值的不确定性。如果我可以在这里引入或获得某种确定性,我也许可以将元数据存储在另一个字段中。

例如,如果我可以依赖字段值的顺序永远不会改变,我可以使用值集中的索引来准确识别我所引用的标签。

当我稍后检索文档时,是否可以保证向字段添加值的顺序保持不变?


根据您对此索引的搜索要求,这可能是可能的。这样您就可以控制字段的顺序。当然,随着标签列表的变化,这需要更新这两个字段,但开销可能是值得的。

doc.Add(new Field("tags", "{personal}|{favorite}")); 
doc.Add(new Field("tagsref", "{1234}|{12345}")); 

注意:使用 {} 可以让您在存在相似值的情况下限定搜索的唯一性。

示例:如果值存储为“person|personal|personage”,搜索“person”将返回包含 person、personal 或 personage 中任何一个的文档。通过像这样在大括号中进行限定:“{person}|{personal}|{personage}”,我可以搜索“{person}”并确保它不会返回误报。当然,这假设您在值中不使用大括号。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以将自定义元数据添加到 Lucene 字段? 的相关文章

  • 仅克隆雪花元数据

    我想克隆 Snowflake 数据库的外壳 仅元数据 无数据 这可能吗 我检查了文档并没有找到解决方案 如果您只是想获取现有数据库的空壳 则可以克隆整个数据库 然后编写脚本截断数据库中存在的所有表 克隆不会添加任何数据 并且克隆上的截断速度
  • 将带有元数据的图像写入 MemoryStream 时,JpegBitmapEncoder.Save() 抛出异常

    我正在尝试在 JPG 图像上设置没有元数据的元数据 在这种情况下 您不能使用就地编写器 InPlaceBitmapMetadataWriter 因为图像中没有元数据的位置 如果我使用 FileStream 作为输出 一切正常 但如果我尝试使
  • 如何使用特定日期的 Sitecore 项目进行 Lucene 搜索?

    我的内容项目是 Sitecore 其日期字段名为 EventDate 我想使用 Lucene Net 搜索具有特定日期的项目 下面是我尝试过的代码 但没有得到结果 var index SearchManager GetIndex event
  • ElasticSearch 全文搜索

    我尝试在elasticsearch java api 中使用正则表达式运行全文搜索 我的过滤器是这样的 FilterBuilder qFilter FilterBuilders regexpFilter all text 但它只匹配一个单词
  • IntPoint 没有索引整数值

    当我们尝试使用字段类型 IntPoint 对整数值进行索引时 这些值似乎没有正确传输到我们的 Lucene 索引中 我们正在使用 Lucene 6 0 根据 Lucene 文档的代码片段 doc add new IntPoint LENGT
  • 如何使用其内容识别图像文件格式?

    如果图像文件的格式为 png那么它将包含 PNG 位于文件的开头 当读入Text mode 如果图像文件的格式为 bmp那么它将包含BM 位于文件的开头 当读入Text mode 我知道图像格式在文件开头包含一定大小 字节 的文本 数据 这
  • 在 lucene.net 中,我们可以在不给出字段名称的情况下搜索内容吗?它会搜索所有已索引的字段吗?

    在 lucene net 中 我们可以在不给出字段名称的情况下搜索内容 并且它将搜索所有已索引的字段 如果不提供字段名称 则无法搜索内容 但是您可以使用 MultiFieldQueryParser 在所有可用字段中进行搜索 E g Dim
  • 如何获取 Angular 2 中当前模块的元数据?

    我想获取当前的元数据NgModule为了得到列表declarations and providers为了填充动态模块 我创建了一个在模态中显示组件的模块 那怎么办呢 您可以使用以下方式访问声明reflect metadata https g
  • 每个领域都有不同的分析仪

    如何为使用 Lucene 索引的文档中的每个字段启用不同的分析器 例子 RAMDirectory dir new RAMDirectory IndexWriter iw new IndexWriter dir new StandardAna
  • 如何以编程方式获取查找器中的“获取信息”窗格(Objective-c)?

    我们右键单击一个文件夹或文件 然后我们可以选择 获取信息 选项来显示一些信息 我想知道我们是否可以通过 Objective c 来做到这一点 None
  • Solr 中的多值字段排序

    我有一个 Solr 索引 将每个产品的价格存储在多值字段中 我需要按价格对结果集进行排序 其中价格从低到高 从高到低 我尝试对价格进行排序 它显示错误您无法对 multivalued True 字段进行排序 下面是我的 solr XML
  • 如何在 MSBuild 中获取扩展名(不带点)

    我有一个 ItemGroup 并在 MSBuild 项目中使用其元数据作为标识符进行批处理 例如
  • 了解elasticsearch如何在内部存储日期

    我想了解 ES 如何在其索引内部存储日期值 它会转换为 UTC 吗 我有一个日期类型的字段 t 这是映射 t type date 现在 当我向 ES 插入 添加文档时 它如何存储在索引中 t 1427700477165 从 Date now
  • 如何判断lucene索引版本?

    我正在编写一个 shell 脚本 csh 它必须确定 lucene 索引版本 然后根据该版本将索引升级到下一个版本 所以 如果 lucene 索引是 2 x 我必须将索引升级到 3 x 最后索引需要升级到6 x 由于升级索引是一个顺序过程
  • apache solr:group by 产生的数据总和

    我们有一个要求 需要按特定字段对记录进行分组 并获取相应数字字段的总和 前任 select userid sum click count from user action group by userid 我们尝试使用 apache solr
  • Lucene外来字符问题

    我在使用 Zend Lucene 和 等外来字符时遇到了一些严重的问题 这些问题在创建索引和查询索引时都会出现 我已经尝试过 iso 8859 1 和 utf 8 ISO 8859 1 不起作用的查询看起来像 area sk ne 使用 Z
  • 如何添加到 OrientDB 中的空间索引?

    我正在使用工作室的 OrientDB 2 0 我使用文档中的代码成功创建了 Lucene 空间索引 CREATE class Place extends V CREATE property Place name string CREATE
  • Lucene,索引已经/外部标记化的标记并定义自己的分析过程

    在使用Lucene的过程中 我有点失望 我不明白或不明白我应该如何继续为任何 Lucene 分析器提供已经可直接索引的东西 或者我应该如何继续创建我自己的分析器 例如 如果我有一个List
  • Solr:在带有空格的字符串上使用通配符

    我的问题与这里讨论的问题基本相同 带空格的 Solr 通配符查询 https stackoverflow com questions 10023133 solr wildcard query with whitespace 但这个问题没有得
  • cursorMark是无状态的以及它如何解决深度分页

    作为指定here https cwiki apache org confluence display solr Pagination of Results光标标记是无状态的 但我不明白它是如何解决无状态的深度分页问题的 solr 是否按唯一

随机推荐