• <small id='RbU6m'></small><noframes id='RbU6m'>

    <tfoot id='RbU6m'></tfoot>
    <i id='RbU6m'><tr id='RbU6m'><dt id='RbU6m'><q id='RbU6m'><span id='RbU6m'><b id='RbU6m'><form id='RbU6m'><ins id='RbU6m'></ins><ul id='RbU6m'></ul><sub id='RbU6m'></sub></form><legend id='RbU6m'></legend><bdo id='RbU6m'><pre id='RbU6m'><center id='RbU6m'></center></pre></bdo></b><th id='RbU6m'></th></span></q></dt></tr></i><div id='RbU6m'><tfoot id='RbU6m'></tfoot><dl id='RbU6m'><fieldset id='RbU6m'></fieldset></dl></div>

    <legend id='RbU6m'><style id='RbU6m'><dir id='RbU6m'><q id='RbU6m'></q></dir></style></legend>
      <bdo id='RbU6m'></bdo><ul id='RbU6m'></ul>

        基于数字字段在Lucene中对搜索结果进行排序

        Sorting search result in Lucene based on a numeric field(基于数字字段在Lucene中对搜索结果进行排序)

            <bdo id='9NnMw'></bdo><ul id='9NnMw'></ul>
            <tfoot id='9NnMw'></tfoot>

              • <i id='9NnMw'><tr id='9NnMw'><dt id='9NnMw'><q id='9NnMw'><span id='9NnMw'><b id='9NnMw'><form id='9NnMw'><ins id='9NnMw'></ins><ul id='9NnMw'></ul><sub id='9NnMw'></sub></form><legend id='9NnMw'></legend><bdo id='9NnMw'><pre id='9NnMw'><center id='9NnMw'></center></pre></bdo></b><th id='9NnMw'></th></span></q></dt></tr></i><div id='9NnMw'><tfoot id='9NnMw'></tfoot><dl id='9NnMw'><fieldset id='9NnMw'></fieldset></dl></div>

              • <small id='9NnMw'></small><noframes id='9NnMw'>

                  <tbody id='9NnMw'></tbody>

                1. <legend id='9NnMw'><style id='9NnMw'><dir id='9NnMw'><q id='9NnMw'></q></dir></style></legend>
                2. 本文介绍了基于数字字段在Lucene中对搜索结果进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我有一些包含两个字段的文档:文本、计数.

                  I have some docs with two fields: text, count.

                  我使用 Lucene 来索引文档,现在我想在文本中搜索并获得按计数降序排序的结果.我该怎么做?

                  I've used Lucene to index docs and now I want to search in text and get the result sorted by count in descending order. How can I do that?

                  推荐答案

                  Apache Lucene 的默认搜索实现返回按 score 排序的结果(最相关的结果在前),然后按 id 排序(最旧的结果在前).

                  The default search implementation of Apache Lucene returns results sorted by score (the most relevant result first), then by id (the oldest result first).

                  可以在查询时使用附加的排序参数自定义此行为.

                  This behavior can be customized at query time with an additionnal Sort parameter .

                  TopFieldDocs Searcher#search(Query query, Filter filter, int n, Sort sort)

                  TopFieldDocs Searcher#search(Query query, Filter filter, int n, Sort sort)

                  Sort 参数指定用于排序的字段或属性.默认实现是这样定义的:

                  The Sort parameter specifies the fields or properties used for sorting. The default implementation is defined this way :

                  new Sort(new SortField[] { SortField.FIELD_SCORE, SortField.FIELD_DOC });
                  

                  要更改排序,您只需将字段替换为您想要的字段:

                  To change sorting, you just have to replace fields with the ones you want :

                  new Sort(new SortField[] {
                  SortField.FIELD_SCORE,
                  new SortField("field_1", SortField.STRING),
                  new SortField("field_2", SortField.STRING) });
                  

                  这听起来很简单,但在满足以下条件之前不会起作用:

                  This sounds simple, but will not work until the following conditions are met :

                  • 必须指定 SortField(String field, int) 的类型参数type) 让 Lucene 找到你的字段,即使这很正常可选.
                  • 排序字段必须被索引但不能被标记:

                  • You have to specify the type parameter of SortField(String field, int type) to make Lucene find your field, even if this is normaly optional.
                  • The sort fields must be indexed but not tokenized :

                  document.add (new Field ("byNumber", Integer.toString(x), Field.Store.NO, Field.Index.NOT_ANALYZED));

                  排序字段内容只能是纯文本.如果只有一个元素在使用的字段之一中具有特殊字符或重音对于排序,整个搜索将返回未排序的结果.

                  The sort fields content must be plain text only. If only one single element has a special character or accent in one of the fields used for sorting, the whole search will return unsorted results.

                  查看此教程.

                  这篇关于基于数字字段在Lucene中对搜索结果进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Lucene Porter Stemmer not public(Lucene Porter Stemmer 未公开)
                  How to index pdf, ppt, xl files in lucene (java based or python or php any of these is fine)?(如何在 lucene 中索引 pdf、ppt、xl 文件(基于 java 或 python 或 php 中的任何一个都可以)?)
                  KeywordAnalyzer and LowerCaseFilter/LowerCaseTokenizer(KeywordAnalyzer 和 LowerCaseFilter/LowerCaseTokenizer)
                  How to search between dates (Hibernate Search)?(如何在日期之间搜索(休眠搜索)?)
                  How to get positions from a document term vector in Lucene?(如何从 Lucene 中的文档术语向量中获取位置?)
                  Java Lucene 4.5 how to search by case insensitive(Java Lucene 4.5如何按不区分大小写进行搜索)
                  <legend id='SLXPw'><style id='SLXPw'><dir id='SLXPw'><q id='SLXPw'></q></dir></style></legend>

                  <small id='SLXPw'></small><noframes id='SLXPw'>

                    <i id='SLXPw'><tr id='SLXPw'><dt id='SLXPw'><q id='SLXPw'><span id='SLXPw'><b id='SLXPw'><form id='SLXPw'><ins id='SLXPw'></ins><ul id='SLXPw'></ul><sub id='SLXPw'></sub></form><legend id='SLXPw'></legend><bdo id='SLXPw'><pre id='SLXPw'><center id='SLXPw'></center></pre></bdo></b><th id='SLXPw'></th></span></q></dt></tr></i><div id='SLXPw'><tfoot id='SLXPw'></tfoot><dl id='SLXPw'><fieldset id='SLXPw'></fieldset></dl></div>

                        <tbody id='SLXPw'></tbody>

                            <bdo id='SLXPw'></bdo><ul id='SLXPw'></ul>
                            <tfoot id='SLXPw'></tfoot>