2011-05-01 200 views
0

假設只有兩種類型的模型對象。複雜全文搜索使用PlayFramework搜索/ Hibernate搜索

標籤 文章

條可以具有可變數量的標籤,以及包含該項目的主體的大型文本字段。

如何對與我定義的一組標籤匹配的文章執行高效的全文本搜索?例如,在一百萬篇文章中,對於1)匹配body:business *和2)的文章,有效查詢(包括計數和分頁支持)的最佳方式是標記爲「America」,「Economy」,並且不標記爲「亞洲」?

我能夠有效地做1)(使用HQL或普通的舊SQL)和2)(使用lucene查詢)分開,但不是兩個在一起。任何人有一些想法?

+0

我不確定要理解「兩者都在一起」是什麼意思...... SQL數據庫搜索和lucene查詢是使用不同索引數據的兩種不同機制,因此它們的工作方式不同,並返回不同的結果。你一起使用它們是什麼意思? – mandubian 2011-05-02 09:00:17

+0

因爲我想過濾那些同時用美國標籤(這是必須在數據庫中完成的事情)和包含世界「商業」(應該在搜索引擎中完成)的文章。我可以分別使用每種方法找到文章,然後將結果交叉在一起,但這似乎是一種非常低效的方法。通過一起使用它們,我的意思是如果有某種方式可以更有效地實現這一點,而不是交叉結果。 – Tony 2011-05-03 07:21:56

+0

是的,要實現交叉並不容易,也不會考慮兩組結果的相關性。如果有兩種方法可以混合使用,我不知道:)...我知道的唯一方法是將所有搜索信息存儲在一個索引引擎中,並且沒有什麼能夠用例如lucene索引某些數據庫數據,例如,已經爲此創建。因此,您可以使用lucene(或其他引擎,如彈性搜索)搜索所有內容, – mandubian 2011-05-03 09:11:48

回答

1

你看過Elastic Search模塊嗎?這是一個非常強大的模塊,模塊所有者已經完成了大量工作記錄他的工作。