【问题标题】:How to handle special characters in fuzzy search query如何处理模糊搜索查询中的特殊字符
【发布时间】: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

【问题讨论】:

    标签: php search solr


    【解决方案1】:

    好的,所以我看到您正在使用 solrphpclient。您需要在 service.php 文件中进行更改,以便将这些特殊字符替换为空白或您想要的任何内容。 这将解决您面临的问题

    $params=str_replace("%", "", $params);
    $params=str_replace("*", "", $params);
    $params=str_replace("&", "", $params);
    

    您需要将其放入搜索功能或自定义功能中,我假设您将其用于模糊查询

    【讨论】:

      猜你喜欢
      • 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
      相关资源
      最近更新 更多