1

我有 700.000 个街道名称、8111 个市镇名称和 80333 个地区邮政编码。我想在 solr 中索引所有这些信息。用户希望通过 ajax 自动完成表单搜索此信息。我已经用很少的数据证明了这一点,并且 ajax 自动完成表单的行为没问题。

 <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.StopFilterFactory"
            ignoreCase="true"
            words="stopwords.txt"
            enablePositionIncrements="true"
            />
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    <filter class="solr.StopFilterFactory"
            ignoreCase="true"
            words="stopwords.txt"
            enablePositionIncrements="true"
            />
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
  </analyzer>
</fieldType>

将所有数据加载到 solr 时会出现问题

  • 我应该如何将信息加载到 solr 服务器(我在一个 grails 应用程序中,我需要加载具有没有数据输入处理程序的信息的实例)今天我今天已经做了很多小时,最后 grails 控制台崩溃了:( --> 我应该使用 grails 脚本而不是使用 grails 控制台执行服务并执行它吗?
  • 或者我应该使用数据输入处理程序来更快地加载它?我可以使用数据输入处理程序连接来自不同表的不同列的字符串值吗?

(可以为每个(700.000 + 8111 + 80.333 个文档)使用不同的文档??)

谢谢你的时间

4

2 回答 2

1

我假设您的城市、街道名称和邮政编码应该分别自动完成。在这种情况下,您将为每个内核使用一个单独的solr 内核。

或者我应该使用数据输入处理程序来更快地加载它?

DIH 会很快,只要这些信息不经常改变,这样做应该没问题。

我可以使用数据输入处理程序连接来自不同表的不同列的字符串值吗?

是的; 在data-config.xml您给出特定SQL查询并可以使用数据库的本机连接(例如||在 oracle 中)。

于 2012-03-13T13:40:34.187 回答
1

说真的,编写一个 shell 脚本并使用 curl 将更新发送到 SOLR。

您正试图用安装在漂浮在游泳池中的船上的大炮将罐头从墙上射下来。你不需要大炮、船或水池。拿着气枪站在那里,一个一个地弹出更新,直到完成。

对于包含示例 SOLR 更新的示例 shell 脚本,请从您附近的镜像下载 SOLR 二进制文件,apache-solr-3.5.0.tgz 或 apache-solr-3.5.0.zip。在http://lucene.apache.org/solr/downloads.html找到镜像

解压存档,进入示例目录并按照以下说明操作 http://lucene.apache.org/solr/tutorial.html

如果您在 UNIX 上,只需使用 post.sh。

顺便说一下,检查您在服务器上安装的 SOLR 版本。如果不是 3.50,那么当你现在有新版本时,为什么要使用旧版本?

于 2012-03-17T06:53:49.500 回答