2010-10-13 99 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