如何使Solr不区分';约翰';和';约翰';

如何使Solr不区分';约翰';和';约翰';,solr,Solr,在solr中,我必须在数据库的“name”字段中获取uniqque值 由于这个原因,我阅读了关于分组的内容,并得到了期望的结果 { "responseHeader":{ "status":0, "QTime":16, "params":{ "indent":"true", "q":"name:И*", "group.field":"name", "group":"true", "wt":"json"}},

在solr中,我必须在数据库的“name”字段中获取uniqque值

由于这个原因,我阅读了关于分组的内容,并得到了期望的结果

{
  "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)并使用小写过滤器使其中一个不区分大小写吗?我不想这样做!