我有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>
时发生了什么?
答案 0 :(得分:0)
唯一发生的事情是*
使查询成为通配符查询。当查询具有通配符时,不会进行任何分析(嗯,不完全正确,因为仍然应用了某些多重软件过滤器)。因此,如果您的字段在编制索引时在@
上拆分为user
和site
令牌,则在查询时不会发生相同的拆分。
因此,Lucene尝试查找以user@site
开头的令牌,但由于索引中唯一可用的令牌是user
和site
,因此这些令牌都不匹配。如果您尝试搜索user*
,则可能会受到影响。
您可以使用Solr管理员下的“分析”页面查看输入字段的处理方式。