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

StackOverflow https://stackoverflow.com/questions/66041

  •  09-06-2019
  •  | 
  •  

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

  1. 帽子里的猫
  2. 霍顿聆听谁的声音

这样的事情可能吗?如果可能的话,如何实现?

我正在使用 Lucene.Net 2.3.1.2。

有帮助吗?

解决方案

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

其他提示

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

自从我使用 Lucene 以来已经有一段时间了,但我的猜测是添加一个额外的字段来排序和存储其中的值,并且停用词已经被删除。您也许可以使用相同的分析器来生成该值。

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

为了搜索,我发现 使用排序选项搜索 lucene .net 索引 链接很有趣,可以解决您的问题

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top