2011-12-01 71 views
0

我需要建立一個像StackOverflow's Users page這樣的搜索功能,其中用戶總是按他們的分數排序,但可能通過輸入名稱的一部分進行過濾。搜索功能就像在這裏在stackoverflow的用戶頁面

我的應用程序已經使用NoSQL數據庫在Java中構建。你能否建議哪些工具可能適合這種實施。

如果我檢索與查詢相匹配的所有用戶名,然後根據用戶的每個請求的應用級別的分數對它們進行排序,會好嗎?然後會有很多不必要的檢索,&也可能是性能問題。

有沒有更好的方法可能通過維護一個已排序的列表(按名稱和聲譽排序)?

另外,偉大的,如果有人可以告訴我們究竟是如何做到這一點?

回答

1

jquery + AJAX(搜索)+ lucene(索引內容和搜索)

+0

我需要爲lucene維護一個單獨的服務器嗎?它在哪裏存儲數據? –

+1

不!您可以將其存儲在您的文件系統或RAM中或任何您喜歡的地方。閱讀有關它,並確定你會喜歡它。這就是我在處理大型數據集時使用的內容 – aishwarya

+0

會試圖指出!可以建議一些簡單的簡單鏈接開始? –

1

嘗試datatables。但是你需要在UI部分工作。

+0

這意味着您建議從數據庫加載整個數據立刻想要顯示大約1000個結果,那麼我應該一次檢索所有結果?這對一個小的結果集可能是好的,但對於1000個這樣的結果不值得。 –

+0

@Raj:雅這種情況並不好。可能是你可以限制顯示的記錄數,選擇幾條記錄並顯示它們。 (即使在SO用戶頁面,他們只顯示幾個頂級用戶) – xyz

+0

是的,但結果是排序頁面明智的,即使在那裏&爲此,你需要閱讀所有數據從DB無論如何.. –

1

我艾西瓦婭同意,是好主意,用Apache Lucene 它提供的功能有很多的,如:通配符,派出搜索,術語/字段/文件的權重,找相似,拼寫檢查,多語種搜索和更多