如何使Solr不区分';约翰';和';约翰';
在solr中,我必须在数据库的“name”字段中获取uniqque值 由于这个原因,我阅读了关于分组的内容,并得到了期望的结果如何使Solr不区分';约翰';和';约翰';,solr,Solr,在solr中,我必须在数据库的“name”字段中获取uniqque值 由于这个原因,我阅读了关于分组的内容,并得到了期望的结果 { "responseHeader":{ "status":0, "QTime":16, "params":{ "indent":"true", "q":"name:И*", "group.field":"name", "group":"true", "wt":"json"}},
{
"responseHeader":{
"status":0,
"QTime":16,
"params":{
"indent":"true",
"q":"name:И*",
"group.field":"name",
"group":"true",
"wt":"json"}},
"grouped":{
"name":{
"matches":2231,
"groups":[{
"groupValue":"ИВАН",
"doclist":{"numFound":1144,"start":0,"docs":[
{
"obshtina":"ПЛОВДИВ",
"phone":"032/670309",
"timestamp":"2013-03-04T08:43:53.553Z"}]
}},
{
"groupValue":"ИЛИЯ",
"doclist":{"numFound":177,"start":0,"docs":[
{
"obshtina":"БРЕЗОВО",
"phone":"(3191)2265",
..............................
问题是,现在我注意到,不幸的是,我有两个组实际上是相同的“аааааа”和“аааАа”。问题是我的“name”字段应该是string类型的,这样我就可以使用通配符,例如,我不能将其设置为文本,也可以使用小写过滤器(它绝对不进行标记化,就像string字段一样)来获取所需内容
您仍然可以执行通配符搜索。您可以使用(它绝对不进行标记化,就像字符串字段一样)来获取所需内容
您仍然可以执行通配符搜索。添加到先前的答案中,您可以使用新的Solr文本类型,如下所示,在索引时只需将值以小写形式存储为单个标记。搜索时,只需将搜索文本视为小写单标记。这样你就可以得到想要的效果
<fieldType name="lcase" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
添加到前面的答案中,您可以使用一个新的Solr文本类型,如下所示,在索引时,只需将该值以小写形式存储为单个标记。搜索时,只需将搜索文本视为小写单标记。这样你就可以得到想要的效果
<fieldType name="lcase" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
您能为两个字段编制索引(使用copyfield)并使用小写筛选器使其中一个字段不区分大小写吗?我不想这样做!你能索引两个字段(使用copyfield)并使用小写过滤器使其中一个不区分大小写吗?我不想这样做!