了解solr响应格式

时间:2015-11-11 16:06:22

标签: solr

编辑:: 认为值得尝试简化我的问题。什么是$ 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

1 个答案:

答案 0 :(得分:1)

  

数组中的第一个条目是什么?

$result[1]->suggestion[0]->word是建议。

  

它有什么逻辑吗?

Solr将他的反应分为不同的部分。在一个抽象的层面上,它的含义如下:
*搜索结果
*拼写检查建议
* facetet搜索结果
...

在您的情况下,该建议正常运行,因为您搜索了gewürztramine并且建议为gewürztraminer

  

我能否始终在该确切位置找到最佳回应?

您将始终在此位置找到此单词的顶级拼写检查建议。