【问题标题】:solar fails when search requirement is fuzzy and wildcard search当搜索要求是模糊和通配符搜索时,solar 失败
【发布时间】:2016-05-23 06:00:06
【问题描述】:

我需要什么

  • 我需要像亚马逊和其他电子商务网站一样使用暗示搜索来构建搜索。

  • 我已尝试使用通配符搜索,它的工作方式类似于 q=string;但是当错误的单词说 plnts 时我无法搜索,bcs 仅适用于 0,1 形式。

  • 当我使用模糊搜索 q="string~1" 时,它会在植物->写 plnts 时给出结果,但它无法在关键字 zer 中搜索肥料。

  • 我使用了建议器,但它不是完整的搜索要求链接:http://wiki.apache.org/solr/Suggester

  • 我苦苦挣扎了 3 天才得到解决方案。

  • 我在 google 上找到了链接:https://gist.github.com/dalegaspi/20b7db4ef2d4d55be661 twitter 使用的 typehaed js。

  • 我用过的代码

        function startSolrSearch ()
        {
        var srchval = $("#productSearch").val().trim();
        if (srchval.length >= 1){
        srchval = srchval.replace(/'|"/g,"").replace(/ /g,"*+*");
    
        srchval = srchval.replace(/ /g,"+AND+");
            console.log(srchval);
        srchval = "*"+srchval+"*";
    
    
        for(var i = 0; i < solrPendingRequests.length; i++){
        solrPendingRequests[i].abort();
        }
        console.log(srchval);
        solrPendingRequests.push($.ajax({
        type : "GET",
        url : solrbasepath + "solr/afeef/select?q="+srchval+'~'+1+"&facet=true&facet.field=title&facet.field=keywords&facet.field=category&indent=on&qt=spellchecker&wt=json&hl=true&hl.fl=title+keywords+model_name&hl.simple.pre=<b>&hl.simple.post=<%2Fb>&hl.usePhraseHighlighter=true&hl.highlightMultiTerm=true&hl.snippets=1&start=0&rows=100",
        dataType : 'JSONP',
        cache : false,
        jsonp: 'json.wrf',
        success : function(html) {
    
        getSearchData (html);
    
        }
        }));
        } 
        else {
    
    
        $('#searchsuggestion .linkresults').html('');
        $('#searchsuggestion').hide();
        $('.close_search').hide();
        }
    

    网址

      http://www.supplified.com:8983/solr/vikas/select?q=zer~1 OR q="*zer*" &ind   nt=on&q.op=AND&facet=true&facet.field=title&facet.field=keywords&debugQuery=on&qt=spellchecker&wt=json&hl=true&hl.fl=title+keywords+model_name&hl.simple.pre=%3Cb%3E&hl.simple.post=%3C%2Fb%3E&hl.usePhraseHighlighter=true&hl.highlightMultiTerm=true&hl.snippets=1&start=0&rows=10&json.wrf=jQuery111205813984868582338_1454571708911&_=1454571708913
    
  • 我需要建议我如何使用暗示性搜索,例如在电子商务网站中使用的亚马逊。

【问题讨论】:

    标签: regex apache search solr autosuggest


    【解决方案1】:

    最好使用 solr 拼写检查组件来更好地控制它。 spellcheck 在其中提供了一系列设置,您可以根据自己的用例对其进行配置。

    为什么在关键词 zer 中搜索肥料时模糊查询不起作用?请参阅此文档进行模糊搜索。

    Fuzzy searches documentation

    Lucene 支持基于 Levenshtein 距离或编辑距离算法的模糊搜索。要进行模糊搜索,请在单个单词 Term 的末尾使用波浪号“~”符号。例如,要搜索与“漫游”拼写相似的术语,请使用模糊搜索: 漫游~ 此搜索将找到诸如泡沫和漫游之类的术语。 从 Lucene 1.9 开始,一个附加(可选)参数可以指定所需的相似性。该值介于 0 和 1 之间,接近 1 的值只会匹配相似度较高的词条。例如: 漫游~0.8 如果未给出参数,则使用的默认值为 0.5。

    您提到匹配的相似度值 = 1,因此它没有返回结果。我认为在相似性参数中使用较小的值可以解决您的问题(尝试 0 到 1 之间的值,看看它是如何工作的)。

    【讨论】:

    • 感谢 mirad 的回答,但根据 url:supplified.com:8983/solr/vikas/select?q={!q.op=AND%20df=title}zer~1&indent=on&q.op=AND&facet=true&facet.field=title&facet.field=keywords&debugQuery =on&qt=spellchecker&wt=json&hl=true&hl.fl=title+keywords+model_name&hl.simple.pre=%3Cb%3E&hl.simple.post=%3C%2Fb%3E&hl.usePhraseHighlighter=true&hl.highlightMultiTerm=true&hl.sn-ps=1&start =0&rows=10&json.wrf=jQuery111205813984868582338_1454571708911&_=1454571708913
    • 我也使用了拼写检查器,但它不起作用
    • 嘿 Afeef,您已经使用了 zer~1,请尝试在查询中使用 zer~0.5 或 zer~0.4。即使您使用拼写检查组件或编写自己的自定义拼写检查算法,您也必须决定 'zer~ k' 中 k 的值。保持 k 的值较低,您也可能会遇到错误的匹配。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多