在生产中,我的应用程序运行 MySQL + Amazon CloudSearch。在开发中,它只运行 MySQL,我对只为开发运行搜索域不感兴趣。
目前,在开发中,我在 MySQL 中运行文本搜索,这并不理想,因为我必须编写特定的环境代码。
我找到了 Groonga CloudSearch,它看起来很棒,但仍然非常年轻且不完整。
那么,在开发中替换 Amazon CloudSearch 的最佳方法是什么?
在生产中,我的应用程序运行 MySQL + Amazon CloudSearch。在开发中,它只运行 MySQL,我对只为开发运行搜索域不感兴趣。
目前,在开发中,我在 MySQL 中运行文本搜索,这并不理想,因为我必须编写特定的环境代码。
我找到了 Groonga CloudSearch,它看起来很棒,但仍然非常年轻且不完整。
那么,在开发中替换 Amazon CloudSearch 的最佳方法是什么?
我们只是添加了一个索引字段来对数据进行分类,例如
系统:开发或现场
然后,代码中的任何搜索都只是将 dev/live 传递给搜索查询,具体取决于它在哪个系统上运行。
您还可以为“域”添加索引,然后具有“www.mydomain.com”和“dev.mydomain.com”的值。然后在您的代码中进行搜索,只需传入文档来自的域以及它们应该可见的位置。
这是“这取决于你如何使用它”的答案之一。您是否有不想在开发中使用 AWS 云搜索的原因(费用除外)?您正在选择一个非常具体的 SAAS 产品,对于不从事该项目的任何人来说,它实际上都是一个黑匣子。
也就是说,一些可行的替代品(取决于所需的功能)是:
-Solr - lucene.apache.org/solr/
-Elasticsearch - elasticsearch.org
-Whoosh - bitbucket.org/mchaput/whoosh/
-Xapian - xapian.org
-Really anything that uses the Lucene - lucene.apache.org/core/ -full text search engine
-MongoDB -mongodb.org
-Memcached memcached.org
-Redis redis.io/
所以...是的...这完全取决于您堆栈中 CloudSearch 的上下文。您可以将其用作具有最少逻辑的键值存储,或者使用复杂的框架,例如