如何按Lucene.Net字段排序并忽略常见的停止词,如';a';和';';?

如何按Lucene.Net字段排序并忽略常见的停止词,如';a';和';';?,lucene,lucene.net,Lucene,Lucene.net,我发现了如何在Lucene.Net索引中按给定字段而不是按分数对查询结果进行排序;它所需要的只是一个已索引但未标记的字段。然而,我还没有弄清楚的是,如何在忽略诸如“a”和“the”等停止词的情况下对该字段进行排序,以便以下书名按升序进行排序,例如: 戴帽子的猫 霍顿听到了一个谁的声音 这样的事情可能发生吗?如果可能,怎么可能 我使用的是Lucene.Net 2.3.1.2。创建索引时,创建一个只包含要排序的单词的字段,然后在检索时,在该字段上排序,但显示完整标题。创建索引时,创建一个只包含要排序

我发现了如何在Lucene.Net索引中按给定字段而不是按分数对查询结果进行排序;它所需要的只是一个已索引但未标记的字段。然而,我还没有弄清楚的是,如何在忽略诸如“a”和“the”等停止词的情况下对该字段进行排序,以便以下书名按升序进行排序,例如:

  • 戴帽子的猫
  • 霍顿听到了一个谁的声音
  • 这样的事情可能发生吗?如果可能,怎么可能


    我使用的是Lucene.Net 2.3.1.2。

    创建索引时,创建一个只包含要排序的单词的字段,然后在检索时,在该字段上排序,但显示完整标题。

    创建索引时,创建一个只包含要排序的单词的字段,然后在检索时,对该字段进行排序,但显示完整标题。

    我已经有一段时间没有使用Lucene了,但我的猜测是添加一个额外的字段,用于排序和存储其中的值,停止字已被删除。您可能可以使用相同的分析器来生成此值。

    我已经有一段时间没有使用Lucene了,但我的猜测是添加一个额外的字段,用于排序和存储其中的值,其中已删除了停止字。您可能可以使用相同的分析器来生成此值。

    似乎存在一个第22条军规,即必须使用分析器对字段进行标记,以便去除标点符号和停止字,但不能对标记字段进行排序。那么,如何在不进行标记化的情况下去除停止词呢?

    似乎存在一个第22条军规,即必须使用分析器对字段进行标记化,以便去除标点和停止词,但不能对标记化字段进行排序。那么,如何在不标记的情况下剥离停止词呢?

    我将Lucene返回的结果包装到自己的自定义对象集合中。然后我可以用额外的信息/上下文信息填充它(并使用highlighter类之类的东西来提取匹配的片段),再加上添加分页。如果您采用类似的方法,您可以创建一个“result”类/对象,添加类似SortBy属性的内容,并获取您想要排序的任何字段,去掉任何停止词,然后将其保存在此属性中。现在只需根据该属性对集合进行排序。

    我将Lucene返回的结果包装到自己的自定义对象集合中。然后我可以用额外的信息/上下文信息填充它(并使用highlighter类之类的东西来提取匹配的片段),再加上添加分页。如果您采用类似的方法,您可以创建一个“result”类/对象,添加类似SortBy属性的内容,并获取您想要排序的任何字段,去掉任何停止词,然后将其保存在此属性中。现在,只需根据该属性对集合进行排序。

    对于搜索,我发现链接有趣,可以解决您的问题。

    对于搜索,我发现链接有趣,可以解决您的问题。

    好吧,这就是诀窍,不是吗?你不能按标记化字段进行排序,我理解,是标记化分析字段中的停止词和标点符号。那么,如何去掉这些停止词,但保持字段未标记化呢?在代码中,去掉停止词。你必须保留你自己的名单。好吧,这就是诀窍,不是吗?你不能按标记化字段进行排序,我理解,是标记化分析字段中的停止词和标点符号。那么,如何去掉这些停止词,但保持字段未标记化呢?在代码中,去掉停止词。你必须保留你自己的清单。我想这就是必须要做的,是的。我确实使用Lucene结果创建了一个自定义对象集合,所以这应该不会太难。谢谢。我想这是必须要做的,是的。我确实使用Lucene结果创建了一个自定义对象集合,所以这应该不会太难。谢谢。不要依赖Lucene来剥他们的衣服,自己动手吧。不要依赖Lucene来剥他们的衣服,自己动手吧。