所以我的solr查询分两部分实现,如果没有找到精确的结果,则第一个查询进行精确搜索,然后进入进行模糊搜索的第二个查询。 一切都运行良好,但在像>用户进入" burg +" 所以在精确搜索中没有记录会出现,所以第二个查询被调用来进行模糊搜索。现在问题是我的模糊查询不理解特殊字符,如+, - *抛出和错误。如果我没有传递特殊字符,它的工作原理精细。但在现实世界中,用户可以在搜索中放置字符,这会引发错误。 现在我陷入困境,不知道如何解决这个问题。 这就是我的确切搜索查询的样子
$query1="(business_name:$data*^100 OR city_name:$data*^1 OR
locality_name:$data*^6 OR business_search_tag_name:$data*^8 OR
type_name:$data*^7) AND (business_active_flag:1) AND
(business_visible_flag:1) AND (delete_status_businessmasters:0)";
这就是我的模糊查询的样子
$query2='(_query_:%20"{!complexphrase%20qf=business_name^100+type_name^0.4+locality_name^6%27}%20'.$url_new.')AND(business_active_flag:1)AND(business_point:[1.5 TO 2.0])&q.op=AND&wt=json&indent=true';
这是我得到的错误
Cannot parse ' must~1 *~N': '*' or '?' not allowed as first character in WildcardQuery
我刚接触solr并且不知道如何处理这种情况。
使用
的详细信息Solrphpclient
PHP
solr 4.9
答案 0 :(得分:2)
好吧所以我看到你正在使用solrphpclient。你需要在service.php文件中进行更改,以便将这些特殊字符替换为空白或任何你想要的。 这将解决您面临的问题
$params=str_replace("%", "", $params);
$params=str_replace("*", "", $params);
$params=str_replace("&", "", $params);
你需要将它放在搜索功能中或你自定义函数里面,我假设你用于模糊查询