2008-09-15 20 views
1

我發現如何按照Lucene.Net索引中的給定字段而不是按分數排序查詢結果;它所需要的只是一個索引但未標記的字段。然而,我無法弄清楚的是,如何在忽略停用詞(如「a」和「the」)的情況下對該字段進行排序,以便以下書名會按照升序排序:如何按Lucene.Net字段進行排序並忽略常見的停用詞,如'a'和'the'?

  1. 在帽子
  2. 霍頓貓聽到誰

是這樣的事情可能的,如果是,如何?

我正在使用Lucene.Net 2.3.1.2。

回答

1

我將Lucene返回的結果封裝到我自己的自定義對象集合中。然後,我可以使用額外的信息/上下文信息來填充它(並使用諸如高亮顯示的類來提取匹配的片段),並添加分頁。如果你採取了類似的路線,你可以創建一個「結果」類/對象,添加類似SortBy屬性的東西,並抓住你想要排序的任何字段,去掉任何停用詞,然後將其保存在此屬性中。現在只需根據該屬性對集合進行排序。

0

當您創建索引時,創建一個只包含您想要排序的詞的字段,然後在檢索時對該字段進行排序,但顯示完整標題。

+0

嗯,這就是關鍵,不是嗎?據我所知,您不能按照標記化字段進行排序,並且可以根據停用詞和標點符號分析字段的標記。那麼如何去除這些停用詞,但保持字段未標記? – Peaeater 2008-09-15 19:57:28

+0

在您的代碼中,去掉停用詞。你必須維護你自己的名單。 – 2008-09-16 15:47:55

0

自從我使用Lucene之後已經有一段時間了,但我的猜測是添加一個額外的字段用於排序,並將已存在的停用詞的值存儲在那裏。您可以使用相同的分析儀來生成此值。

0

似乎有一個catch-22,你必須使用分析器標記字段以便去除標點符號和停用詞,但是不能在標記化字段上排序。那麼如何去掉停用詞而不用標記?

+1

不要依賴Lucene去除它們,自己動手。 – 2008-09-16 15:48:28

相關問題