SolrCloud 模式下的 Solr suggester
Solr suggester in SolrCloud mode
我是运行三个分片的CloudSolr模式下的solr。数据已经索引到 solr 中。现在我已经在 solrconfig.xml 中配置了 solr suggester。这是来自 solrconfig 文件的配置。我正在使用 solr 4.10 版本。
<searchComponent name="suggest" class="solr.SuggestComponent">
<lst name="suggester">
<str name="name">mysuggest</str>
<str name="lookupImpl">FuzzyLookupFactory</str>
<str name="storeDir">suggester_fuzzy_dir</str>
<str name="dictionaryImpl">DocumentDictionaryFactory</str>
<str name="field">businessName</str>
<str name="payloadField">profileId</str>
<str name="weightField">businessName</str>
<str name="suggestAnalyzerFieldType">text_general</str>
<str name="buildOnStartup">false</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>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
这是我用来获取结果的命令:
http://shard1:8900/solr/core/suggest?suggest=true&suggest.build=true&suggest.reload&suggest.dictionary=mysuggest&wt=json&indent=true&suggest.q=sale
这是命令的输出:
{
"responseHeader":{
"status":0,
"QTime":1490},
"command":"build",
"suggest":{}
}
没有任何内容进入建议结果。我在 solr 中索引了 10K 条记录。
我在日志文件中看到以下内容:
org.apache.solr.handler.component.SuggestComponent; http://shard1:8983/solr/core/ : null
org.apache.solr.handler.component.SuggestComponent; http://shard2:8900/solr/core/ : null
org.apache.solr.handler.component.SuggestComponent; http://shard3:7574/solr/core/ : null
我不明白这里缺少什么。谢谢
它无法正常工作,因为 solr 运行 处于 SolrCloud 模式。 solrCloud模式下建议有两种方式:
使用 distrib=false 参数。这将仅从您在命令中访问的一个分片中获取数据。您可以将以下内容添加到组件定义本身。
<bool name="distrib">false</bool>
使用 shards 和 shards.qt 参数搜索所有分片。 shards 参数将包含要包含在查询中的所有分片的逗号分隔列表。 shards.qt 参数将定义您要访问的内容 API。
shards.qt: Signals Solr that requests to shards should be sent to a request handler given by this parameter. Use shards.qt=/spell when making the request if your request handler is "/spell".
shards: shards=solr-shard1:8983/solr,solr-shard2:8983/solr Distributed Search
请查看Here了解更多详情。
我是运行三个分片的CloudSolr模式下的solr。数据已经索引到 solr 中。现在我已经在 solrconfig.xml 中配置了 solr suggester。这是来自 solrconfig 文件的配置。我正在使用 solr 4.10 版本。
<searchComponent name="suggest" class="solr.SuggestComponent">
<lst name="suggester">
<str name="name">mysuggest</str>
<str name="lookupImpl">FuzzyLookupFactory</str>
<str name="storeDir">suggester_fuzzy_dir</str>
<str name="dictionaryImpl">DocumentDictionaryFactory</str>
<str name="field">businessName</str>
<str name="payloadField">profileId</str>
<str name="weightField">businessName</str>
<str name="suggestAnalyzerFieldType">text_general</str>
<str name="buildOnStartup">false</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>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
这是我用来获取结果的命令:
http://shard1:8900/solr/core/suggest?suggest=true&suggest.build=true&suggest.reload&suggest.dictionary=mysuggest&wt=json&indent=true&suggest.q=sale
这是命令的输出:
{
"responseHeader":{
"status":0,
"QTime":1490},
"command":"build",
"suggest":{}
}
没有任何内容进入建议结果。我在 solr 中索引了 10K 条记录。
我在日志文件中看到以下内容:
org.apache.solr.handler.component.SuggestComponent; http://shard1:8983/solr/core/ : null
org.apache.solr.handler.component.SuggestComponent; http://shard2:8900/solr/core/ : null
org.apache.solr.handler.component.SuggestComponent; http://shard3:7574/solr/core/ : null
我不明白这里缺少什么。谢谢
它无法正常工作,因为 solr 运行 处于 SolrCloud 模式。 solrCloud模式下建议有两种方式:
使用 distrib=false 参数。这将仅从您在命令中访问的一个分片中获取数据。您可以将以下内容添加到组件定义本身。
<bool name="distrib">false</bool>
使用 shards 和 shards.qt 参数搜索所有分片。 shards 参数将包含要包含在查询中的所有分片的逗号分隔列表。 shards.qt 参数将定义您要访问的内容 API。
shards.qt: Signals Solr that requests to shards should be sent to a request handler given by this parameter. Use shards.qt=/spell when making the request if your request handler is "/spell".
shards: shards=solr-shard1:8983/solr,solr-shard2:8983/solr Distributed Search
请查看Here了解更多详情。