我们正在尝试开发一种在mongodb实例上使用elasticsearch进行全文搜索的策略。似乎我们想要用作过滤器的每个关键点都必须包含在弹性指数中。潜在地,我们可以使用mongo中的每个键作为过滤器-例如,对描述进行全文搜索,根据日期和电话号码进行过滤。有没有人有将全文添加到mongo的真实经验,可以分享给大家?
也许我们可以只使用elasticsearch作为db?
发布于 2012-02-08 00:18:59
我看不出有任何理由将ElasticSearch与MongoDb结合使用,只是将ElasticSearch用作必须搜索的文档的单独文档存储。是的,你甚至可以作为整个数据库。当然,这取决于您的域模型和其他因素。
如果你不需要词干,模糊搜索,复杂的通配符搜索,你可以使用mongoDb进行搜索。当插入新文档时,将其拆分为小写的单词,并将其添加到数组中,例如“单词”。稍后,您可以使用regex对此数组执行搜索请求。不能在此正则表达式中使用I (忽略大小写)选项,并且只能搜索LIKE%通配符(或不带通配符),否则搜索将不会使用mongoDb索引。
还有一个选择-您可以尝试查找用于mongoDb的river
另一个选择--如果你使用的是Java,那就是使用Lucene。也许你将能够扩展Lucene类,这样,Directory将在MongoDb中存储索引,而不是文件系统或内存。我没有在这方面做过任何研究,但我认为这是可能的。
发布于 2012-02-08 11:18:37
我在MongoDB中尝试了全文搜索,方法是像@Umar建议的那样拆分字符串中的单词。老实说,这是一个数据库,而不是一个搜索引擎,所以我会使用Mongo作为持久存储,ElasticSearch作为搜索引擎的一部分。事实上,我会坚持使用Postgresql之类的持久存储,然后将您想要搜索的数据推送到搜索引擎。http://gdal.org/ogr/drv_elasticsearch.html是一个允许您将数据从一个关系型数据库系统快速导出到ElasticSearch的驱动程序。只要THe数据是连接到输入源的一种方式,就不必是地理空间数据才能使用GDAL。
亚当
https://stackoverflow.com/questions/9179414
复制相似问题