2014-04-14 36 views
4

我試圖從MySQL數據庫遷移到ElasticSearch,因此我可以在每個字段上使用BM25相似度的全文搜索技術。我使用JAVA從MySQL獲取條目並將它們添加到ElasticSearch索引中。如何將我的索引配置爲使用JAVA API在ElasticSearch中使用BM25?

我建立我的索引使用JAVA index API,但我找不到一種方法來設置我的領域BM25相似性。

我認爲一個表產品從MySQL表和開發產品,因爲它的索引類型的索引。

原始表產品包含以下字段:

  • ID
  • 標題
  • 描述

你可以找到我的Github的代碼,如果你想去看一看。 這是我用Maven集成配置的分叉項目。

歡迎任何建議和任何幫助,謝謝!

回答

5

我找到了我的問題的答案。

下面是代碼:

Settings settings = ImmutableSettings 
      .settingsBuilder() 
      .put("cluster.name", "es_cluster_name")) 
      // Define similarity module settings 
      .put("similarity.custom.type", "BM25") 
      .put("similarity.custom.k1", 2.0f) 
      .put("similarity.custom.b", 1.5f) 
      .build(); 

Client client = new TransportClient(settings); 

看來你實例化你的客戶端之前,你可以定義你想要的設置使用相似的模塊。

以下是目前elasticsearch支持的相似度模塊列表:默認爲 ,BM25,DFR,IB,LMDirichlet和LMJelinekMercer。您可以指定要在設置裏使用如下其中之一:

.put("similarity.custom.type", "...") 

每個相似都有自己的參數,你會想,以正確地使用它配置爲好。

說明:代碼測試elasticsearch 1.1.0。

+0

索引使用的默認相似性度量是什麼? TF.IDF? –

+2

是的,我上次檢查過。 – eliasah

相關問題