Solr 建议器近乎实时不可用
Solr suggester not available in near real time
我在通过 SOLR suggester.Although 近乎实时地显示结果时遇到了一些麻烦,如果我尝试使用搜索处理程序,它可以正常工作以进行近乎实时的搜索。
如果我添加一个文档,我可以通过搜索处理程序在接近 rel 的时间内检索到该文档,但是只有在我重新加载 core.Why 之后,相同的记录才在建议者中可用,这是发生了吗?
这是我在 solr-config.xml
中的建议者条目
<searchComponent name="suggest" class="solr.SuggestComponent">
<lst name="suggester">
<str name="name">mySuggester</str>
<str name="lookupImpl">FuzzyLookupFactory</str> <!-- org.apache.solr.spelling.suggest.fst -->
<str name="dictionaryImpl">DocumentDictionaryFactory</str> <!-- org.apache.solr.spelling.suggest.HighFrequencyDictionaryFactory -->
<str name="field">email</str>
<str name="weightField">popularity</str>
<str name="suggestAnalyzerFieldType">string</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">mySuggester</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
这里是我的autocommit和soft commit入口(使用默认值)
<autoCommit>
<maxTime>${solr.autoCommit.maxTime:15000}</maxTime>
<openSearcher>false</openSearcher>
</autoCommit>
<autoSoftCommit>
<maxTime>${solr.autoSoftCommit.maxTime:-1}</maxTime>
</autoSoftCommit>
我无法近乎实时地获取建议者结果的原因是我错过了这个 属性
<str name="buildOnCommit">true</str>
希望这对其他人有帮助。
引用 Lucidworks 指南:
“特别是,任何使用“DocumentDictionaryFactory”的版本在构建建议器时都会从字段的存储数据中读取原始数据!这意味着如果您已将 1M 文档添加到索引并开始构建,每个每份文件必须:
从磁盘读取
减压
被合并到建议者的数据结构中。
这样做的结果是配置中指定的字段必须在您的模式中设置 stored=”true”。
正如您所想象的,这可能需要一段时间,而且不能轻易完成。 “一段时间”在 Mac Pro 上的 11M 文档维基百科转储中将近 10 分钟。“
知道:
“buildOnStartup”参数应该设置为“false”。真的。这会导致启动时间很长,在非常大的索引上需要很多分钟。你真的想重新读取、解压缩和添加每个文档中的字段吗每次启动 Solr 时都给建议者!可能不会,但如果你愿意,你可以。
“buildOnCommit”参数应设置为“false”。真的。你真的想在每次提交时重新阅读、解压缩每个文档的字段并将其添加到建议者中吗?可能不会,但如果你愿意,你可以。"
希望对您有所帮助!
我在通过 SOLR suggester.Although 近乎实时地显示结果时遇到了一些麻烦,如果我尝试使用搜索处理程序,它可以正常工作以进行近乎实时的搜索。 如果我添加一个文档,我可以通过搜索处理程序在接近 rel 的时间内检索到该文档,但是只有在我重新加载 core.Why 之后,相同的记录才在建议者中可用,这是发生了吗? 这是我在 solr-config.xml
中的建议者条目 <searchComponent name="suggest" class="solr.SuggestComponent">
<lst name="suggester">
<str name="name">mySuggester</str>
<str name="lookupImpl">FuzzyLookupFactory</str> <!-- org.apache.solr.spelling.suggest.fst -->
<str name="dictionaryImpl">DocumentDictionaryFactory</str> <!-- org.apache.solr.spelling.suggest.HighFrequencyDictionaryFactory -->
<str name="field">email</str>
<str name="weightField">popularity</str>
<str name="suggestAnalyzerFieldType">string</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">mySuggester</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
这里是我的autocommit和soft commit入口(使用默认值)
<autoCommit>
<maxTime>${solr.autoCommit.maxTime:15000}</maxTime>
<openSearcher>false</openSearcher>
</autoCommit>
<autoSoftCommit>
<maxTime>${solr.autoSoftCommit.maxTime:-1}</maxTime>
</autoSoftCommit>
我无法近乎实时地获取建议者结果的原因是我错过了这个 属性
<str name="buildOnCommit">true</str>
希望这对其他人有帮助。
引用 Lucidworks 指南:
“特别是,任何使用“DocumentDictionaryFactory”的版本在构建建议器时都会从字段的存储数据中读取原始数据!这意味着如果您已将 1M 文档添加到索引并开始构建,每个每份文件必须: 从磁盘读取 减压 被合并到建议者的数据结构中。 这样做的结果是配置中指定的字段必须在您的模式中设置 stored=”true”。 正如您所想象的,这可能需要一段时间,而且不能轻易完成。 “一段时间”在 Mac Pro 上的 11M 文档维基百科转储中将近 10 分钟。“
知道: “buildOnStartup”参数应该设置为“false”。真的。这会导致启动时间很长,在非常大的索引上需要很多分钟。你真的想重新读取、解压缩和添加每个文档中的字段吗每次启动 Solr 时都给建议者!可能不会,但如果你愿意,你可以。 “buildOnCommit”参数应设置为“false”。真的。你真的想在每次提交时重新阅读、解压缩每个文档的字段并将其添加到建议者中吗?可能不会,但如果你愿意,你可以。"
希望对您有所帮助!