2010-10-13 59 views
5

虽然是一个新手,可能这个问题很天真。 我想根据索引搜索我的索引。所以我试着用一个索引Name创建一个文档,然后想要搜索那个特定的字段。按Lucene中的字段搜索

我正在这样做,试图找出我是否可以更新文档的字段,而无需在lucene中实际删除文档。

谢谢。

回答

0

我正在这样做,试图找出我是否可以更新文档的字段而不实际删除lucene中的文档。

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

+0

嗨蒂罗,我只是想按字段搜索我的索引。例如,我想要在我的索引中获取特定字段的值[说出名称]。通常你通过Document.getField(“Name”)来做到这一点,如果你知道文档,但是我不能在搜索索引时使它工作。 – Sunil 2010-10-13 03:47:07

+1

Document.getField只有在该字段是STORED(而不仅仅是INDEXED)时才会起作用。 – Thilo 2010-10-13 04:31:07

4

您可以使用冒号语法搜索特定字段内的单词,即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