我发现了如何按 Lucene.Net 索引中的给定字段而不是按分数对查询结果进行排序;所需要的只是一个已编入索引但未标记化的字段。但是,我无法弄清楚的是如何在忽略“a”和“the”等停用词的情况下对该字段进行排序,以便例如以下书名按升序排序:
- 帽子里的猫
- 霍顿听到谁
这样的事情是否可能,如果是,如何?
我正在使用 Lucene.Net 2.3.1.2。
我发现了如何按 Lucene.Net 索引中的给定字段而不是按分数对查询结果进行排序;所需要的只是一个已编入索引但未标记化的字段。但是,我无法弄清楚的是如何在忽略“a”和“the”等停用词的情况下对该字段进行排序,以便例如以下书名按升序排序:
这样的事情是否可能,如果是,如何?
我正在使用 Lucene.Net 2.3.1.2。
我将 Lucene 返回的结果包装到我自己的自定义对象集合中。然后我可以用额外的信息/上下文信息填充它(并使用诸如荧光笔类之类的东西来提取匹配的片段),并添加分页。如果您采用类似的路线,您可以创建一个“结果”类/对象,添加类似 SortBy 属性的内容并获取您想要排序的任何字段,删除所有停用词,然后将其保存在此属性中。现在只需根据该属性对集合进行排序。
创建索引时,创建一个仅包含您希望排序的单词的字段,然后在检索时对该字段进行排序但显示完整标题。
自从我使用 Lucene 以来已经有一段时间了,但我的猜测是添加一个额外的字段来排序和存储其中的值,并且已经去除了停用词。您可能可以使用相同的分析器来生成此值。
似乎有一个 catch-22,您必须使用分析器对字段进行标记以去除标点符号和停用词,但您不能对标记化的字段进行排序。那么如何在不进行标记的情况下去除停用词呢?
对于搜索,我发现搜索 lucene .net 索引和排序选项链接很有趣,可以解决你的问题