Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Solr 处理拼写检查建议_Solr_Solrnet_Solr4 - Fatal编程技术网

Solr 处理拼写检查建议

Solr 处理拼写检查建议,solr,solrnet,solr4,Solr,Solrnet,Solr4,我们正在尝试使用Solr的拼写检查来做一个“你的意思是什么?”类型的建议 我们遇到的问题是,我们正在用Solr的建议替换查询中的原始术语 例如:搜索“10ks”(我们正在创建一个活动站点)将返回“5ks”的建议 然而,拼写检查似乎使用了“ks”而不是“10ks”作为术语,因此当我们将“ks”替换为“5ks”时,我们得到了105ks。这会导致一个无限的“DoyouMean”循环,因为Solr在拼写检查建议中总是使用“ks”而不是“10ks” 下面是我们用来替换原始查询中的建议的代码 ///

我们正在尝试使用Solr的拼写检查来做一个“你的意思是什么?”类型的建议

我们遇到的问题是,我们正在用Solr的建议替换查询中的原始术语

例如:搜索“10ks”(我们正在创建一个活动站点)将返回“5ks”的建议

然而,拼写检查似乎使用了“ks”而不是“10ks”作为术语,因此当我们将“ks”替换为“5ks”时,我们得到了105ks。这会导致一个无限的“DoyouMean”循环,因为Solr在拼写检查建议中总是使用“ks”而不是“10ks”

下面是我们用来替换原始查询中的建议的代码

    /// <summary>
    /// Method that takes the first suggestion for all the spelling and applys them to the keyword
    /// </summary>
    private string GetSuggestedQuery(string keyword, List<SpellCheck> suggestions)
    {
        if (suggestions != null)
        {
            for (var i = 0; i < suggestions.Count; i++)
            {
                keyword = keyword.Replace(suggestions.ElementAt(i).Query,
                                          suggestions.ElementAt(i).Suggestions.First());
            }
            return keyword;
        }
        return null;
    }
//
///方法,该方法对所有拼写接受第一个建议并将其应用于关键字
/// 
私有字符串GetSuggestedQuery(字符串关键字,列表建议)
{
if(建议!=null)
{
对于(var i=0;i
这对于两个单词的查询非常有用,例如“runnig events”将得到“running events”


我唯一能想到的是做一些简单的事情,比如检查原始查询中的空格,然后如果查询包含空格,则替换整个查询。

查看拼写检查.collate设置。它将以您建议的方式返回重新编写的查询


如果不查看schema.xml中的字段定义,很难回答。可能适用于您的案例的分析仪有:


WordDelimiterFilterFactory的拆分字母数字转换设置为off(请参阅:),以及StandardTokenizerFactory。

已整理的查询似乎存在相同的问题,因此对于“伦敦10ks”,它被重新写入“伦敦105ks”,我认为这是一个标记化问题。我同意这与标记化有关。您能否用您从中获得建议的字段的字段类型定义更新您的问题。