编辑:: 认为值得尝试简化我的问题。什么是$ result [0]?为什么它会返回我提供的拼写检查词。
我设置了一个拼写检查requestHandler。它似乎工作正常,但我不明白响应...我将提供下面的所有配置数据,但直接跳到这里的问题是spellcheck.q ='gewürztramine'的响应(期待发现:Gewürztraminer)
Array
(
[0] => gewürztramine
[1] => stdClass Object
(
[numFound] => 1
[startOffset] => 0
[endOffset] => 13
[origFreq] => 0
[suggestion] => Array
(
[0] => stdClass Object
(
[word] => gewürztraminer
[freq] => 1
)
)
)
)
数组中的第一个条目是什么?好像我想要$ result [1] - > suggestion [0] - > word。回应中的这个位置对我没有任何意义。它有什么逻辑吗?我能不能在这个确切的位置找到最佳回应?
solrconfig.xml中
<requestHandler name="/spell" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="spellcheck.dictionary">default</str>
<str name="spellcheck">true</str>
<str name="spellcheck.extendedResults">true</str>
<str name="spellcheck.count">10</str>
<str name="spellcheck.alternativeTermCount">5</str>
<str name="spellcheck.maxResultsForSuggest">5</str>
</lst>
<arr name="last-components">
<str>spellcheck</str>
</arr>
</requestHandler>
<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
<!-- a spellchecker built from a field of the main index -->
<lst name="spellchecker">
<str name="name">default</str>
<str name="field">title</str>
<str name="classname">solr.DirectSolrSpellChecker</str>
<!-- minimum accuracy needed to be considered a valid spellcheck suggestion -->
<float name="accuracy">0.5</float>
<!-- the minimum shared prefix when enumerating terms -->
<int name="minPrefix">1</int>
<!-- minimum length of a query term to be considered for correction -->
<int name="minQueryLength">3</int>
</lst>
</searchComponent>
schema.xml中
<field name="title" type="text_general" indexed="true" stored="true" required="true" multiValued="false" />
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
感谢您提供的任何帮助
REQUEST:
http://xxx/solr/grape/spell?q=gew%C3%BCrztramine&wt=json&spellcheck=true&spellcheck.q=gew%C3%BCrztramine
答案 0 :(得分:1)
数组中的第一个条目是什么?
$result[1]->suggestion[0]->word
是建议。
它有什么逻辑吗?
Solr将他的反应分为不同的部分。在一个抽象的层面上,它的含义如下:
*搜索结果
*拼写检查建议
* facetet搜索结果
...
在您的情况下,该建议正常运行,因为您搜索了gewürztramine
并且建议为gewürztraminer
我能否始终在该确切位置找到最佳回应?
您将始终在此位置找到此单词的顶级拼写检查建议。