我需要什么
我需要使用暗示搜索来构建像亚马逊和其他e-com网站一样的搜索。
我尝试过wilcard搜索,就像q = string ;但是,当错误的单词表示plnts时,我无法搜索,bcs仅适用于0,1形式。
当我使用模糊搜索q =“string~1”时,它会在plant->写入plnts时给出结果,但是在搜索关键词zer for fertilizer时失败。
我使用了建议者,但它没有满足搜索要求链接:http://wiki.apache.org/solr/Suggester。
我正在奋斗3天才能获得解决方案。
我用Google搜索了发现链接:https://gist.github.com/dalegaspi/20b7db4ef2d4d55be661知识分子使用的类型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();
}
url
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
我需要建议如何在e-com网站上使用像亚马逊这样的暗示搜索。
答案 0 :(得分:0)
最好使用solr拼写检查组件来更好地控制它。 spellcheck提供了一系列设置,您可以根据自己的使用情况对其进行配置。
为什么模糊查询在搜索关键词zer for fertilizer时不起作用?请参考此文档进行模糊搜索。
Lucene支持基于Levenshtein距离或编辑距离算法的模糊搜索。要进行模糊搜索,请在单个单词Term的末尾使用波浪号“〜”符号。例如,要搜索拼写为“漫游”的术语,请使用模糊搜索: 漫游〜 此搜索将找到像泡沫和漫游这样的术语。 从Lucene 1.9开始,附加(可选)参数可以指定所需的相似性。该值介于0和1之间,值接近1,仅匹配具有更高相似度的项。例如: 漫游〜0.8 如果未给出参数,则使用的默认值为0.5。
你已经提到匹配的相似度值= 1,因此它没有返回结果。我认为在相似性参数中使用较小的值可以解决您的问题(尝试0到1之间的值,看看它是如何工作的。)