SOLR:搜索拼写检查案例处理不正确
SOLR: Search spellcheck cases handling is not proper
Case 1:
如果我搜索“Name:blck
”,结果如下 -- 正确
"black"
未找到结果和拼写检查建议
{
"responseHeader":{
"status":0,
"QTime":119,
"params":{
"q":"Name:blck",
"fl":"Name",
"rows":"5",
"_":"1582184918494"}},
"response":{"numFound":0,"start":0,"docs":[]
},
"spellcheck":{
"suggestions":[
"blck",{
"numFound":1,
"startOffset":5,
"endOffset":9,
"origFreq":0,
"suggestion":[{
"word":"black",
"freq":32435}]}],
"correctlySpelled":false}}
Case 2
如果我搜索“Name:blck+top
”,结果如下 -- 这里我需要对黑字进行拼写检查
{
"responseHeader":{
"status":0,
"QTime":48,
"params":{
"q":"Name:blck+top",
"fl":"Name",
"rows":"5",
"_":"1582184918494"}},
"response":{"numFound":14442,"start":0,"docs":[
{
"Name":"Shimmery Seamless Top"},
{
"Name":"Ruffle Sleeve Top"},
{
"Name":"Ruffle Sleeve Top"},
{
"Name":"Ruffle Sleeve Top"},
{
"Name":"Ruffle Sleeve Top"}]
},
"spellcheck":{
"suggestions":[],
"correctlySpelled":true}}
所以,基本上我只是想在搜索中的任何单词错误时显示拼写检查建议。
我的字段的结果在 solr 中有以下数据。
{
"description":"Black Top"
},
{
"description":"Sleeve Top"
},
{
"description":"Seamless Top"
}
我的字段是 description
,它在 solr.xml
中定义如下。
<field name="description" type="text_general"/>
相同的查询是:
http://10.168.72.101:8983/solr/knowledge_combined/select?df=description&fl=description&q=blck%20top&spellcheck=on
这是我从 solr 收到的回复。
这里是solr.config.xml
中添加的拼写检查配置
<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
<str name="queryAnalyzerFieldType">text_general</str>
<lst name="spellchecker">
<str name="name">default</str>
<str name="field">description</str>
<str name="classname">solr.DirectSolrSpellChecker</str>
<str name="distanceMeasure">internal</str>
<float name="accuracy">0.5</float>
<int name="maxEdits">2</int>
<int name="minPrefix">1</int>
<int name="maxInspections">5</int>
<int name="minQueryLength">4</int>
<float name="maxQueryFrequency">0.01</float>
</lst>
</searchComponent>
<requestHandler name="/spell" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="spellcheck.dictionary">default</str>
<str name="spellcheck">on</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>
<str name="spellcheck.collate">true</str>
<str name="spellcheck.collateExtendedResults">true</str>
<str name="spellcheck.maxCollationTries">10</str>
<str name="spellcheck.maxCollations">5</str>
</lst>
<arr name="last-components">
<str>spellcheck</str>
</arr>
</requestHandler>
Case 1:
如果我搜索“Name:blck
”,结果如下 -- 正确
"black"
未找到结果和拼写检查建议{
"responseHeader":{
"status":0,
"QTime":119,
"params":{
"q":"Name:blck",
"fl":"Name",
"rows":"5",
"_":"1582184918494"}},
"response":{"numFound":0,"start":0,"docs":[]
},
"spellcheck":{
"suggestions":[
"blck",{
"numFound":1,
"startOffset":5,
"endOffset":9,
"origFreq":0,
"suggestion":[{
"word":"black",
"freq":32435}]}],
"correctlySpelled":false}}
Case 2
如果我搜索“Name:blck+top
”,结果如下 -- 这里我需要对黑字进行拼写检查
{
"responseHeader":{
"status":0,
"QTime":48,
"params":{
"q":"Name:blck+top",
"fl":"Name",
"rows":"5",
"_":"1582184918494"}},
"response":{"numFound":14442,"start":0,"docs":[
{
"Name":"Shimmery Seamless Top"},
{
"Name":"Ruffle Sleeve Top"},
{
"Name":"Ruffle Sleeve Top"},
{
"Name":"Ruffle Sleeve Top"},
{
"Name":"Ruffle Sleeve Top"}]
},
"spellcheck":{
"suggestions":[],
"correctlySpelled":true}}
所以,基本上我只是想在搜索中的任何单词错误时显示拼写检查建议。
我的字段的结果在 solr 中有以下数据。
{
"description":"Black Top"
},
{
"description":"Sleeve Top"
},
{
"description":"Seamless Top"
}
我的字段是 description
,它在 solr.xml
中定义如下。
<field name="description" type="text_general"/>
相同的查询是:
http://10.168.72.101:8983/solr/knowledge_combined/select?df=description&fl=description&q=blck%20top&spellcheck=on
这是我从 solr 收到的回复。
这里是solr.config.xml
<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
<str name="queryAnalyzerFieldType">text_general</str>
<lst name="spellchecker">
<str name="name">default</str>
<str name="field">description</str>
<str name="classname">solr.DirectSolrSpellChecker</str>
<str name="distanceMeasure">internal</str>
<float name="accuracy">0.5</float>
<int name="maxEdits">2</int>
<int name="minPrefix">1</int>
<int name="maxInspections">5</int>
<int name="minQueryLength">4</int>
<float name="maxQueryFrequency">0.01</float>
</lst>
</searchComponent>
<requestHandler name="/spell" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="spellcheck.dictionary">default</str>
<str name="spellcheck">on</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>
<str name="spellcheck.collate">true</str>
<str name="spellcheck.collateExtendedResults">true</str>
<str name="spellcheck.maxCollationTries">10</str>
<str name="spellcheck.maxCollations">5</str>
</lst>
<arr name="last-components">
<str>spellcheck</str>
</arr>
</requestHandler>