Solr:建议程序字典构建会创建巨大的临时文件

时间:2018-07-06 10:50:06

标签: solr sunspot sunspot-rails sunspot-solr

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

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

  • AnalyzingSuggester1784590344675447619.input (数量有所不同)。这个文件越来越大,直到最终我没有空间再消失了?

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

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

1 个答案:

答案 0 :(得分: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>