2011-03-21 56 views
0

我已經看了這個問題 - Indexing multilingual words in lucene,它證實了我的一些懷疑。Lucene多語言文本字段

我有一個實體有很多我希望索引的字段。其中一個字段可以是幾種語言之一,我需要爲每種語言使用不同的分析器。

我是否最好將其作爲同一索引中的不同字段或每種語言的不同索引來實現?

我猜測這種折衷是在運行多個索引的開銷和混淆單個索引的過程之間進行的。

任何意見讚賞。

+0

您是否需要同時搜索多種語言?如果是這樣,你不能使用多個索引。 – Xodarap 2011-03-21 14:00:47

+0

我不應該需要執行多語言搜索。 – Finbarr 2011-03-21 20:08:29

回答

2

還有一個你沒有提到的想法:你可以使每種語言都是一個非存儲的非索引字段。然後,您可以將所有(分析過的)數據複製到單個存儲的+索引字段中,並且其行爲就像搜索單個字段一樣。 (這與Solr的「複製字段」類似 - 我不確定在休眠時有多難。)

如果您將它們保留在單獨的索引中,則應該注意,您將無法輕鬆搜索各種語言(或者可以說,完全可以)。所以,如果你想允許像「english:foo dutch:foo」這樣的查詢,你將需要它們在同一個索引中。

從性能的角度來看,它取決於共享多少數據。如果文檔不相交(即沒有文檔中有兩種語言),那麼在一個索引與兩個索引之間可能沒有太大的區別。它們共享的數據越多,Lucene將複製的內存就越多,因此擁有一個索引會更好。我的猜測是,這只是一個問題,如果你有很多存儲的數據,但是YMMV。

+0

那麼從我的角度來看問題是這樣的:如果我有一個名爲'Description'的字段,並且它可以使用語言'A'或'B',並且它們都使用不同的分析器,如果我將兩個分析器對着字段運行創建'DescriptionA'和'DescriptionB',我將以不使用任何語言的嚴重標記化索引結束。 – Finbarr 2011-03-21 20:11:24

+1

@Finbarr:所以你想解決的問題是「我如何識別文本所在的語言?」 – Xodarap 2011-03-21 20:55:30