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

时间:2008-09-15 19:37:20

标签: lucene lucene.net

我已经找到了如何通过Lucene.Net索引中的给定字段而不是分数对查询结果进行排序;所需要的只是一个被索引但未被标记化的字段。但是,我无法弄清楚的是如何在忽略诸如“a”和“the”之类的停用词的同时对该字段进行排序,以便以下书籍标题按升序排序,如下所示:

  1. 帽子里的猫
  2. Horton听见谁
  3. 这样的事情是否可能,如果是的话,怎么样?

    我正在使用Lucene.Net 2.3.1.2。

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

自从我使用Lucene已经有一段时间了,但我的猜测是添加一个额外的字段用于排序并将值存储在那里,并且已经删除了停用词。您可以使用相同的分析器来生成此值。

答案 3 :(得分:0)

似乎有一个catch-22,你必须使用分析器对字段进行标记,以便去除标点符号并停止单词,但是你无法对标记化字段进行排序。然后如何在没有标记化的情况下去除停用词?

答案 4 :(得分:0)

对于搜索,我发现search lucene .net index with sort option链接很有意思来解决您的问题