`
mxsfengg
  • 浏览: 209163 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

solr 排序的限制。

    博客分类:
  • java
阅读更多

 

 

there are more terms than documents in field "attr_quotes", but it's impossible to sort on tokenized fields
 2010-06-10 16:01:43 [main] [org.apache.solr.core.SolrCore]-[ERROR] java.lang.RuntimeException: there are more terms than documents in field "attr_quotes", but it's impossible to sort on tokenized fields
 at org.apache.lucene.search.FieldCacheImpl$StringIndexCache.createValue(FieldCacheImpl.java:706)
 at org.apache.lucene.search.FieldCacheImpl$Cache.get(FieldCacheImpl.java:208)
 at org.apache.lucen
 attr_quotes asc

  贴下引发异常的代码。由此证明  分词的field和 多值的field不能排序的。

 

  protected Object createValue(IndexReader reader, Entry entryKey)
        throws IOException {
      String field = StringHelper.intern(entryKey.field);
      final int[] retArray = new int[reader.maxDoc()];
      String[] mterms = new String[reader.maxDoc()+1];
      TermDocs termDocs = reader.termDocs();
      TermEnum termEnum = reader.terms (new Term (field));
      int t = 0;  // current term number

      // an entry for documents that have no terms in this field
      // should a document with no terms be at top or bottom?
      // this puts them at the top - if it is changed, FieldDocSortedHitQueue
      // needs to change as well.
      mterms[t++] = null;

      try {
        do {
          Term term = termEnum.term();
          if (term==null || term.field() != field) break;

          // store term text
          // we expect that there is at most one term per document
          if (t >= mterms.length) throw new RuntimeException ("there are more terms than " +
                  "documents in field \"" + field + "\", but it's impossible to sort on " +
                  "tokenized fields");
          mterms[t] = term.text();

          termDocs.seek (termEnum);
          while (termDocs.next()) {
            retArray[termDocs.doc()] = t;
          }

          t++;
        } while (termEnum.next());
      } finally {
        termDocs.close();
        termEnum.close();
      }

      if (t == 0) {
        // if there are no terms, make the term array
        // have a single null entry
        mterms = new String[1];
      } else if (t < mterms.length) {
        // if there are less terms than documents,
        // trim off the dead array space
        String[] terms = new String[t];
        System.arraycopy (mterms, 0, terms, 0, t);
        mterms = terms;
      }

      StringIndex value = new StringIndex (retArray, mterms);
      return value;
    }
  };

 

分享到:
评论

相关推荐

    solr-6.2.0源码

    4. 高级搜索功能:Solr提供丰富的查询语法,如布尔逻辑、短语匹配、模糊匹配、字段限制等,以及自定义查询解析器和过滤器。 5. 自定义排序和评分:用户可以自定义文档排序规则和评分算法,以满足特定的业务需求。 6....

    solr开发维护参考

    Solr是Apache软件基金会的一个开源项目,它是基于Java的全文搜索服务器,主要功能包括文档索引、搜索、排序和分布式处理。Solr利用了Lucene库的强大搜索功能,并且提供了更高级别的API和服务,使得企业级搜索应用的...

    solr介绍及使用.docx

    索引数据后,用户可以通过 Solr 的查询接口执行搜索,查询语句可以包含各种条件、过滤器和排序规则,实现复杂的查询逻辑。Solr 还支持实时更新和增量索引,保证了数据的实时性。 为了进一步优化搜索体验,Solr 支持...

    solr-8.0.0.tgz

    7. **结果集排序和剪枝**:Solr允许用户根据相关度或其他自定义因素对搜索结果进行排序,并且可以通过设置查询限制来控制返回的结果数量。 8. ** faceted search(面式搜索)**:Solr提供了一种高效的方式来实现...

    solr4.6.0 源代码

    Solr的核心是Lucene库,这是一个强大的全文搜索引擎库,但Solr在Lucene的基础上提供了更多高级特性,如分布式搜索、集群支持、多核心管理、自定义排序和高亮显示等。 源代码分析: 1. **索引构建与查询处理**: ...

    windows版本的单机solr

    下载完成后,解压缩到一个合适的目录,一般推荐在不受系统权限限制的路径下,例如`C:\solr`。解压后,你会看到一系列的文件夹和文件,其中包含Solr的配置、核心(core)以及Tomcat服务器,因为Solr通常是在Tomcat...

    solr文档solr文档

    在"Solr注意.txt"文件中,可能会包含一些使用Solr过程中需要注意的事项或最佳实践,例如避免使用不推荐的配置选项,或是对特定功能的限制和警告。 "archives"可能是一个包含历史版本或备份的目录,对于跟踪Solr的...

    solr-6.5.1.tgz

    - **安全性**:设置安全策略,限制对 Solr 的访问,防止未授权的查询和操作。 - **扩展性**:考虑未来可能的数据增长,设计可扩展的架构,如云部署或水平扩展。 5. **Solr 的应用场景** - **电商搜索**:在购物...

    solr搜索自动补全

    此外,文档中还提到了一些潜在的OCR(光学字符识别)技术的限制,例如文字识别错误或者漏识别的情况。这说明在处理文档或扫描文档内容的时候,需要仔细校验和理解扫描出的文字,确保所获得的信息是准确无误的。这...

    solr京东案例包括项目资料和数据库

    案例可能会涉及如何配置Solr的安全模块,如Shiro或Kerberos,以限制对Solr服务的访问。 数据库部分可能涉及如何与Solr配合使用的数据库类型(如MySQL、Oracle等),以及如何设计数据库结构以支持高效的数据导入和...

    solr in action

    - **高度可配置性**:Solr允许用户根据需求定制搜索行为,包括自定义排序规则、过滤条件等。 - **丰富的功能集**:除了基本的文本搜索外,Solr还支持地理位置搜索、拼写检查等功能。 - **RESTful API**:Solr提供了...

    solr facet 笔记

    - **facet.sort**:控制分面结果的排序方式,可以按分面值的出现次数(默认)、字母顺序或其他自定义排序方式。 - **facet.limit**:限制返回的分面结果数量,超出此限制的将不会显示。 - **facet.offset**:设定...

    高效的企业级搜索引擎Solr

    filterCache主要用于存储文档ID的集合,这些ID集合可用于查询过滤、结果分组或排序等场景。通过对filterCache进行优化,可以显著提高搜索性能。例如,在使用`facet`和`fq`参数时,合理调整filterCache可以大幅提升...

    solr查询语法

    - **“~”**:模糊检索,如`roam~`可找到与“roam”拼写相近的单词,`roam~0.8`则限制了模糊程度。 - **“^”**:用于调整相关度,使某些关键词在搜索结果中更具优先级。 - **布尔操作符AND、OR、NOT**:分别用于...

    src.rar_solr

    - `fq`:过滤查询,限制结果集。 - `sort`:排序依据。 - `rows`:返回结果的数量。 - `start`:结果集的起始位置,用于分页。 三、Solr 文档添加 1. 使用 HTTP POST 方法向 Solr 添加文档,例如 `curl ...

    solr in action 完整版

    - 排序(Sorting)和分页(Pagination):在返回结果之前,可以对结果进行排序和限制返回数量。 - 高亮(Highlighting)和命中(Hits)统计:用户界面可以通过高亮显示匹配的文本部分,并提供关于总命中数的统计信息。 ### ...

    开源企业搜索引擎SOLR的应用教程

    - **solrconfig.xml**:包含了Solr服务的各种配置参数,如索引更新策略、搜索响应时间限制等,是控制Solr行为的关键文件。 #### SOLR的应用 - **SOLR应用概述**:Solr广泛应用于各种场景,如电子商务产品搜索、...

    Solr.学习文档

    - **过滤器与排序**:使用过滤器而不是查询来限制结果集,这可以显著提高查询效率。 - **使用 DisMax 查询处理器**:DisMax 提供了更灵活的查询语法,支持多种查询选项,如近义词查询等。 - **使用 Faceting**:...

    Solr搜索引擎部署应用.docx

    - `sort`:排序方式,如`sort=id desc`。 - `wt`:指定输出格式,如`xml`, `json`等。 - `fq`:过滤查询,限制返回结果。 - `df`:默认查询字段。 - `qt`:查询类型,一般不用指定。 - `indent`:控制返回结果是否...

Global site tag (gtag.js) - Google Analytics