【问题标题】:Solr : Suggester dictionary build creates huge temporary filesSolr : Suggester 字典构建创建巨大的临时文件
【发布时间】:2018-07-06 10:50:05
【问题描述】:

我正在为我的 rails 应用程序使用 sunspot-solr 2.3.0。 我在 Solr 上实现了一个建议器(AnalyzingSuggester)用于自动完成。我有一个大约 11M 条目的数据库,其中包含由 Solr 索引的 5 个字段。

在构建建议字典时,会在我的 /tmp/ 文件夹中创建两个文件:

  • AnalyzingSuggester1784590344675447619.input(数量不同)。这个文件越来越大,直到最后我没有空间了然后它似乎消失了?

  • AnalyzingSuggester8456478182934503596.sorted(数量也不同)。此文件为 0 kb。

我搜索了很多,但似乎无法理解到底发生了什么,以及我是否应该/如何防止这种奇怪的行为。这是字典构建的正常部分吗?这只是一些日志记录吗?

【问题讨论】:

  • 什么是实际文件大小的“巨大”?您的索引文件大小有多大?
  • @MatsLindh 巨大在这里的意思是“我设备上剩下的所有空间”,在开发环境中到 50go 或在我的生产服务器上到 200go。我的索引在生产中的权重似乎约为 13(索引文件夹中有 317 个文件),字典文件夹的权重为 1.8,只有一个文件。出于某种原因,在开发环境中它是 8go 和 1,3go。

标签: solr sunspot sunspot-rails sunspot-solr


【解决方案1】:

我的 solr 6.0.1 也有同样的问题。 tmp 文件无限期地爆炸,直到硬盘驱动器已满。

我的索引只包含大约 2500 个文档。

搜索组件:

<searchComponent class="solr.SuggestComponent" name="autoSuggest">
        <lst name="suggester">
            <str name="name">analyzingSuggester</str>
            <str name="lookupImpl">AnalyzingLookupFactory</str>
            <str name="storeDir">analyzing_suggestions</str>
            <str name="dictionaryImpl">DocumentDictionaryFactory</str>
            <str name="buildOnCommit">false</str>
            <str name="buildOnStartup">false</str>
            <str name="field">text_suggest_auto</str>
            <str name="suggestAnalyzerFieldType">text_suggestion_auto</str>
        </lst>
    </searchComponent>

请求处理程序:

<requestHandler class="solr.SearchHandler" name="/suggestAuto" startup="lazy" >
        <lst name="defaults">
            <str name="suggest">true</str>
            <str name="suggest.dictionary">analyzingSuggester</str>
            <str name="suggest.onlyMorePopular">true</str>
            <str name="suggest.count">10</str>
            <str name="suggest.collate">true</str>
        </lst>
        <arr name="components">
            <str>autoSuggest</str>
        </arr>
    </requestHandler>

字段:

<fieldType name="text_suggestion_auto" class="solr.TextField" positionIncrementGap="100">
            <analyzer type="index">
                <tokenizer class="solr.WhitespaceTokenizerFactory"/>
                <filter class="solr.WordDelimiterFilterFactory" 
            generateWordParts="1" 
            generateNumberParts="1" 
            preserveOriginal="1"/>  
                <filter class="solr.LowerCaseFilterFactory"/>
                <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_general.txt" format="snowball" />
            </analyzer>
            <analyzer type="query">
                <tokenizer class="solr.WhitespaceTokenizerFactory"/>
                <filter class="solr.LowerCaseFilterFactory"/>
                <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_general.txt" format="snowball" />
            </analyzer>
    </fieldType>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    • 2015-08-09
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多