1

我的 mongodb 数据库中有数百万个文档,为了实现搜索,我正在使用 Apache Solr。我用谷歌搜索了如何将数据从 mongodb 导入到 solr,但发现没有使用数据导入处理程序的直接方法。因此,我决定在使用 Java 的 solr 客户端 SolrJ 将文档插入 mongoDB 的同时将文档插入 Solr。我的文档在 mongoDB 中采用以下格式:

{
    "_id" : ObjectId("51cc52c9e4b04f75b27542ba"),
    "article" : {
        "summary" : "As more people eschew landlines, companies are offering technologies like\npersonal cell sites and signal boosters to augment cellphones, Eric A. Taub\nwrites in The New York Times.\n\n",
        "author" : "By THE NEW YORK TIMES",
        "title" : "Daily Report: Trying to Fix a Big Flaw in Cellphone Technology (NYT)",
        "source" : "NYT",
        "publish_date" : "Thu, 27 Jun 2013 12:01:00 +0100",
        "source_url" : "http://bits.blogs.nytimes.com/feed/",
        "url" : "http://news.feedzilla.com/en_us/stories/top-news/315578403?client_source=api&format=json"
    },
    "topics" : [
        {
            "categoryName" : "Technology Internet",
            "score" : "94%"
        }
    ],
    "socialTags" : [
        {
            "originalValue" : "Cell site",
            "importance" : "1"
        },
        {
            "originalValue" : "Cellular repeater",
            "importance" : "1"
        },
        {
            "originalValue" : "Technology Internet",
            "importance" : "1"
        }
    ],
    "entities" : [
        {
            "_type" : "PublishedMedium",
            "name" : "The New York Times"
        },
        {
            "_type" : "Company",
            "name" : "The New York Times"
        },
        {
            "_type" : "Person",
            "name" : "Eric A. Taub"
        }
    ]
}

我想对两个字段进行索引:“文章”数组的“摘要”和“标题”。

到目前为止,我了解到将整个文档放入 solr 是没有意义的,因为它会增加索引的大小并使搜索速度变慢。所以,我决定在 Solr 中存储以下字段:'docId'、'title'、'summary',所以在 solr 中搜索时,我将只检索 docId,然后从 mongodb 检索其他详细信息,因为它比从 solr 检索数据更快。分析器,标记器和所有。

第一: 所以,我需要维护一个唯一字段'docId',我应该使用mongod生成的默认'_id'吗?但是为此必须首先插入文档,以便 mongod 可以生成“_id”。所以我需要在插入 mongodb 后检索文档,获取“_id”,然后在 solr 中插入“docId”、“summary”和“title”字段。这可以改进吗?

第二: 我需要为此在 solr 中定义模式,我必须将 mongodb 中的字段映射到 solr 中的字段。我从 solr/example/start.jar 运行了 solr 的默认实例。它有一个默认模式和一个名为“collection1”的默认集合。如何创建自己的收藏,我在管理界面中找不到任何东西。我想为我的项目创建一个集合,然后按照我上面定义的那样编写一个模式。

无论我找到什么教程,他们只是将文档添加到 solr。那么我需要覆盖默认架构吗?

注意:我是 Solr 的新手,您在阅读问题后已经推断出:D 所以请帮忙!

4

0 回答 0