我發現如何按照Lucene.Net索引中的給定字段而不是按分數排序查詢結果;它所需要的只是一個索引但未標記的字段。然而,我無法弄清楚的是,如何在忽略停用詞(如「a」和「the」)的情況下對該字段進行排序,以便以下書名會按照升序排序:如何按Lucene.Net字段進行排序並忽略常見的停用詞,如'a'和'the'?
- 在帽子
- 霍頓貓聽到誰
是這樣的事情可能的,如果是,如何?
我正在使用Lucene.Net 2.3.1.2。
我發現如何按照Lucene.Net索引中的給定字段而不是按分數排序查詢結果;它所需要的只是一個索引但未標記的字段。然而,我無法弄清楚的是,如何在忽略停用詞(如「a」和「the」)的情況下對該字段進行排序,以便以下書名會按照升序排序:如何按Lucene.Net字段進行排序並忽略常見的停用詞,如'a'和'the'?
是這樣的事情可能的,如果是,如何?
我正在使用Lucene.Net 2.3.1.2。
我將Lucene返回的結果封裝到我自己的自定義對象集合中。然後,我可以使用額外的信息/上下文信息來填充它(並使用諸如高亮顯示的類來提取匹配的片段),並添加分頁。如果你採取了類似的路線,你可以創建一個「結果」類/對象,添加類似SortBy屬性的東西,並抓住你想要排序的任何字段,去掉任何停用詞,然後將其保存在此屬性中。現在只需根據該屬性對集合進行排序。
當您創建索引時,創建一個只包含您想要排序的詞的字段,然後在檢索時對該字段進行排序,但顯示完整標題。
自從我使用Lucene之後已經有一段時間了,但我的猜測是添加一個額外的字段用於排序,並將已存在的停用詞的值存儲在那裏。您可以使用相同的分析儀來生成此值。
似乎有一個catch-22,你必須使用分析器標記字段以便去除標點符號和停用詞,但是不能在標記化字段上排序。那麼如何去掉停用詞而不用標記?
不要依賴Lucene去除它們,自己動手。 – 2008-09-16 15:48:28
對於搜索,我發現search lucene .net index with sort option鏈接有趣的解決烏爾問題
嗯,這就是關鍵,不是嗎?據我所知,您不能按照標記化字段進行排序,並且可以根據停用詞和標點符號分析字段的標記。那麼如何去除這些停用詞,但保持字段未標記? – Peaeater 2008-09-15 19:57:28
在您的代碼中,去掉停用詞。你必須維護你自己的名單。 – 2008-09-16 15:47:55