1

我在 MongoDB 中有多语言数据,格式如下

"name":{
  "en" :  "dog",
  "fr" : "chien"
},"description" :{ 
} 

我关心文本搜索,即用户应该能够使用文本搜索"dog""chien"(或其子字符串)来定位相同的对象。我正在研究几个全文搜索引擎,例如 elasticsearch、solr 和 sphinxsearch,乍一看,elasticsearch 看起来很有希望。以上是一个糟糕的结构吗?其他引擎是否有明显的优势?以及如何在弹性搜索中实现这样的搜索?

4

1 回答 1

1

Solr 和 ElasticSearch 都建立在 Apache Lucene 之上,并且都将提供您想要的功能。我没有使用过 Elastic Search,因此根据我对 Solr 的经验进行了概述,但我确信同样可以无缝过渡到 Elastic Search。

  1. 您需要将 mongodb 数据导入并索引到 Solr 中。这很容易通过运行 Solr 并使用它的 rest api 来实现。您还可以使用 10gen mongo-connector :https ://github.com/10gen-labs/mongo-connector将您的 mongodb 记录导入 Solr。还有许多其他方法可以将您的 mongodb 数据导入 Solr,包括用您选择的语言编写您自己的脚本。

  2. 您需要为导入的数据定义模式定义。对于您的搜索案例,您将主要使用将 Solr 工厂(过滤器/标记器等)应用于文本数据的“文本”。

3.如何定义架构取决于用户流程,您将选择。您的网站是否将是语言中立的,搜索“fem”将显示所有以“fem”开头的语言的所有结果。或者你要让用户先选择语言。例如“French”,然后仅在“fr”字段中搜索该术语,我认为这将是一个更简洁的解决方案。

于 2013-10-22T19:13:45.460 回答