2013-10-22 80 views
1

我有多种语言数据,在MongoDB中与像多语言文本搜索Elasticsearch

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

我关心的文本搜索格式,即用户应该能够找到与文本搜索相同的物体,像"dog""chien" (或其子串)。 我正在寻找像elasticsearch,solr和sphinxsearch这样的全文搜索引擎,乍一看elasticsearch看起来很有前景。上述是一个糟糕的结构,是否有其他引擎的明显优势是重要的?那么如何在elasticsearch中实现这样的搜索呢?

+0

你似乎没有奇怪的要求,可能没有足够的信息来判断。我会建议玩一下,并判断自己喜欢什么。 – javanna

回答

1

Solr和ElasticSearch都建立在Apache Lucene的基础之上,并且都会提供您想要的功能。 我没有使用Elastic Search,因此根据我对Solr的经验给出了一个概述,但我相信同样可以无缝地过渡到Elastic Search。

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

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

3.如何定义架构取决于用户流程,您将选择。您的网站是语言中性的,搜索“fem”会显示所有以“fem”开头的语言的所有结果。 或者你要让用户先选择语言。例如“法语”,然后只在'fr'字段中搜索该术语,在我看来这将是更清洁的解决方案。