如何按Lucene.Net字段排序,并忽略常见的停用词,例如\\’a \\’和\\’the \\’?

如何按Lucene.Net字段排序,并忽略常见的停用词,例如\\’a \\’和\\’the \\’?

How to sort by Lucene.Net field and ignore common stop words such as 'a' and 'the'?

我发现了如何通过Lucene.Net索引中的给定字段而不是分数来对查询结果进行排序;它所需要的只是一个已索引但未标记化的字段。但是,我仍无法弄清如何在不考虑停用词(例如" a"和" the")的情况下对该字段进行排序,例如,以下书名将以这种升序排列:

  • 帽子里的猫
  • 霍顿听到了谁
  • 这样的事情有可能吗,如果可以,怎么办?

    我正在使用Lucene.Net 2.3.1.2。


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


    对于搜索,我发现带有排序选项链接的搜索lucene .net索引对于解决您的问题很有趣


    似乎有一个陷阱22,您必须使用分析器对字段进行标记化以去除标点符号和停用词,但是您不能对标记化的字段进行排序。然后如何在不标记的情况下剥离停用词?


    自从我使用Lucene以来已经有一段时间了,但是我的猜测是添加一个额外的字段,用于在其中已经删除了停用词的情况下对值进行排序和存储。您可能可以使用相同的分析器来生成该值。


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


    推荐阅读