当前位置: 首页 > 知识库问答 >
问题:

Apache Lucene从文档返回方面字段

柳星晖
2023-03-14
Document doc = new Document();
doc.add(new FacetField("Author", "Bob"));
doc.add(new FacetField("Publish Date", "2010", "10", "15"));
doc.add(new FacetField("Tags", "A"));
doc.add(new FacetField("Tags", "B"));

//[FacetField(dim=Author path=[Bob]), FacetField(dim=Publish Date path=[2010, 10, 15]), FacetField(dim=Tags path=[A]), FacetField(dim=Tags path=[B])]
System.out.println(doc.getFields());

//null
System.out.println(doc.getField("Author"));

doc.getfields()返回所有字段,但doc.getfield(“author”)返回NULL。我做错什么了吗?

进一步挖掘,如果我做这样的事情:

for(IndexableField myField:doc.getFields()){
    System.out.println(myField.name());
}

以下为打印内容:

dummy
dummy
dummy
dummy

查看FacetField源代码:https://github.com/apache/lucene-solr/blob/branch_6_3/lucene/facet/src/java/org/apache/lucene/facet/FacetField.java似乎所有的FacetField都是用“dummy”创建的:https://github.com/apache/lucene-solr/blob/branch_6_3/lucene/facet/src/java/org/apache/lucene/facet/FacetField.java

public FacetField(String dim, String... path) {
super("dummy", TYPE);

这是窃听器吗?

共有1个答案

游乐池
2023-03-14

我自己也遇到了同样的问题。如果您要编写所述文档并通过搜索获得它,您将看到FacetFields实际上并不存储为文档的一部分。此外,搜索FacetField中的值不起作用(返回0个结果)。如果有一个标志或其他东西会导致字段同时写入分类法和索引本身,那就好了,但我认为问题是文档索引有几个其他属性不适用于分面字段,所以它们只是将它们分开以避免混淆。

我的方法是在文档上写两次字段:一个是FacetField,另一个是具有所需属性的字段。

示例:

Document doc = new Document();

// Add facet fields, not stored/searchable, but can be drilled down into
doc.add(new FacetField("Author", "Bob"));
...

// Add other fields
doc.add(new TextField("Author", "Bob", Store.YES));
...
 类似资料:
  • 任何人都可以帮助我查询mongo以释放数组,我使用的是mongdb本机驱动程序我的收集文档如下,也请忽略我的objectId它只是示例 而我的预期产出是 我只想解开我的数组,在一个查询中的爱好描述之间添加一个逗号,谢谢你的帮助

  • 问题内容: 这可以返回一个字符串: 但是我无法获取返回的html文档。这不起作用: 很抱歉成为菜鸟! 编辑: 我已经在单独的文档中使用了html。所以我需要返回文档,或者以某种方式读取/解析它,所以我不只是重新输入所有的html … 编辑: 我的web.xml中有这个 还有其他我可以放的东西,所以它只是返回一个文件,例如… 问题答案: 您可以从Servlet本身 打印 HTML (不建议使用) 或

  • 问题内容: 我正在搜索索引中的文档,然后尝试通过获取其中的一些文档。尽管收到了一组结果,但是某些文档无法通过简单的get来检索。更糟糕的是,我可以通过URI搜索获得相同的文档,其中 例如,运行一个简单的GET 给我结果: 但是,如果我使用相同的_id进行搜索: 我得到了预期的结果: 我正在通过Stretcher ruby​​ API索引文档,索引后立即进行刷新。我的本地设置是 2个节点 。我正在运

  • 环境 期望的行为 我想更新文档并返回原始文档。 实际行为 正在返回更新的文档,而不是原始文档。 我试过的 起初,我在查看findAndModify: http://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#findAndModify 然而,那里的文档表示它已被弃用,并使用findOneAndUpdate、findOn

  • 问题内容: 我用如下猫鼬定义了一个模型: 然后创建了一个用户,可以通过mongo控制台完美地找到它,如下所示: 但是,当我尝试通过带有mongoose的node.js访问此对象时,要检索的对象不是此类文档,而是包装器: 这段代码… 从console.dir(doc)产生此输出… 因此,密码将不匹配,因为doc.password未定义。 为什么会这样呢? 问题答案: 这正是包裹猫鼬对象的猫鼬的目的。

  • 我有已导入收藏的. json-file。 我想做一些地图缩减,以显示所有用户的评论总数及其平均值。 我试过: 我不知道为什么它会显示\u id“:null。我想这个.ratings.userId是错误的。但是这个.ratings[userId]也不起作用。 我预计会出现以下情况: 你能帮忙吗?