【发布时间】:2016-12-02 18:14:04
【问题描述】:
我有大约 300,000 条记录要上传到 solr 云建议器上。这些记录是动态的,即会添加新文档,并且将来会定期删除一些文档。我面临的问题是:
使用 FileDictionaryFactory:此方法是操作上的噩梦。我需要继续生成文件并将其上传到zookeeper(仍然没有弄清楚如何将这样的大文件上传到zookeeper)。并且可能需要分别在 solr 云上的每台服务器上创建索引。经常这样做似乎是不可能的。
使用 DocumentDictionaryFactory:这种方法似乎是一个显而易见的选择,但在这里构建索引也是一场噩梦。每次我尝试构建索引时,都会收到“设备上没有剩余空间”错误。我尝试在 5K 记录上构建它,它成功了。但这花了 40 分钟,并且在整个 40 分钟内消耗了全部 10GB 内存。
我的问题是,如果我们采用第二种方法,我们能否优化此索引构建时间。 或者,如果我遵循第一种方法,那么处理要在 solr 云上索引的频繁更改的理想方法应该是什么。
我的配置:
对于 FileDictionaryFactory:
<searchComponent name="suggest" class="solr.SuggestComponent">
<lst name="suggester">
<str name="name">suggestions</str>
<str name="lookupImpl">FuzzyLookupFactory</str>
<str name="dictionaryImpl">FileDictionaryFactory</str>
<str name="field">searchfield</str>
<str name="weightField">searchscore</str>
<str name="suggestAnalyzerFieldType">text_ngram</str>
<str name="buildOnStartup">false</str>
<str name="buildOnCommit">false</str>
<str name="sourceLocation">spellings.txt</str>
<str name="storeDir">autosuggest_dict</str>
</lst>
</searchComponent>
<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="suggest">true</str>
<str name="suggest.count">10</str>
<str name="suggest.dictionary">suggestions</str>
<str name="suggest.dictionary">results</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
对于 DocumentDictionaryFactory:
<searchComponent name="suggest" class="solr.SuggestComponent">
<lst name="suggester">
<str name="name">suggestions</str>
<str name="lookupImpl">FuzzyLookupFactory</str>
<str name="dictionaryImpl">DocumentDictionaryFactory</str>
<str name="field">searchfield</str>
<str name="weightField">searchscore</str>
<str name="payloadField">payload</str>
<str name="suggestAnalyzerFieldType">text_ngram</str>
<str name="buildOnStartup">false</str>
<str name="buildOnCommit">false</str>
<str name="sourceLocation">spellings.txt</str>
<str name="storeDir">autosuggest_dict</str>
</lst>
</searchComponent>
<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="suggest">true</str>
<str name="suggest.count">10</str>
<str name="suggest.dictionary">suggestions</str>
<str name="suggest.dictionary">results</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
【问题讨论】:
-
你需要显示你的推荐者配置文件,特别是 buildOnCommit 等设置
-
在描述中添加了配置。
标签: solr apache-zookeeper spell-checking solrcloud