【发布时间】:2015-07-19 00:49:23
【问题描述】:
所以我的 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 新手,不知道如何解决这种情况。
我正在使用的详细信息
Solrphp客户端
php
solr 4.9
【问题讨论】: