【问题标题】:Search by field in Lucene在 Lucene 中按字段搜索
【发布时间】:2010-10-13 03:34:49
【问题描述】:

虽然完全是新手,但这个问题可能很幼稚。 我想根据索引搜索我的索引。所以我尝试创建一个只有一个索引名称的文档,然后想要搜索该特定字段。

我正在尝试找出是否可以在不实际删除 lucene 中的文档的情况下更新文档的字段。

谢谢。

【问题讨论】:

    标签: lucene


    【解决方案1】:

    您可以使用冒号语法搜索特定字段中的单词,即name:john

    但是因为很多索引只有一个字段是你要搜索的,所以有一个默认字段,以防你只搜索john。您可以设置实例化 QueryParser 时的字段

    QueryParser parser = new QueryParser(Version.LUCENE_30, "name", anAnalyzer);
    Query q = parser.parse("john");
    

    如果您想以编程方式创建查询而不是解析用户输入的查询字符串,那么您还必须明确指定字段,例如:

    Query q = new TermQuery(new Term("name", "john"));
    

    链接:Using fields in Lucene queries (Lucene Query Syntax) | QueryParser Javadoc | TermQuery Javadoc

    【讨论】:

      【解决方案2】:

      我正在尝试找出是否可以在不实际删除 lucene 文档的情况下更新文档的字段。

      我不明白第一个问题,但是您不能在 Lucene 中更新文档。您必须删除并重新插入。

      【讨论】:

      • 嗨 Thilo,我只想按字段搜索我的索引。例如,我想在我的索引中获取特定字段 [比如名称] 的值。通常,如果您知道文档,则可以通过 Document.getField("Name") 执行此操作,但在搜索索引时我无法使其正常工作。
      • Document.getField 仅在字段被存储(而不仅仅是索引)时才有效。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-26
      • 1970-01-01
      • 2011-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多