在solr查询中“@”之后的含义是什么“*”

时间:2017-11-10 08:46:03

标签: solr

我有http://localhost:8983/solr/user/select?q=username%3Auser%40site*&wt=json&indent=true username:user@site* *,但结果数为0.如果我删除username:user数量的结果将是正确的。如果我使用查询username:user**,结果将是相同的。

我在查询@之后使用$db_selected_value = "2"; // retrieved data <select name="comic_publisher" id="publishers" > @foreach($group as $team) <option value="{{$team['group_id']}}" @if($db_selected_value == $team['group_id']) {{ 'selected' }} @endif>{{$team['comic_group_name']}}</option> @endforeach </select> 时发生了什么?

1 个答案:

答案 0 :(得分:0)

唯一发生的事情是*使查询成为通配符查询。当查询具有通配符时,不会进行任何分析(嗯,不完全正确,因为仍然应用了某些多重软件过滤器)。因此,如果您的字段在编制索引时在@上拆分为usersite令牌,则在查询时不会发生相同的拆分。

因此,Lucene尝试查找以user@site开头的令牌,但由于索引中唯一可用的令牌是usersite,因此这些令牌都不匹配。如果您尝试搜索user*,则可能会受到影响。

您可以使用Solr管理员下的“分析”页面查看输入字段的处理方式。