2012-12-24 181 views
0

我正在使用Lucene在數據集中進行搜索,現在我需要如何「」搜索(我的意思是精確的詞組搜索)機制已經實現?搜索引擎如何執行精確的詞組搜索?

我想讓它能夠在用戶輸入「littlecat」時使所有「小貓」命中。我現在應該操縱索引代碼,但至少我現在應該如何進行搜索。

回答

0

我想讓它能夠導致所有的「小貓咪」命中當用戶輸入「littlecat」

這聽起來容易,但它是非常艱難的實現。對於一個人來說,小和貓是兩個不同的單詞,但對於一臺電腦來說,它不知道什麼是貓和貓,除非你有一本字典,並且你的代碼在字典中檢查這兩個單詞。另一方面,搜索「小貓」也可以輕鬆搜索「littlecat」。我相信這是一個精確短語搜索的概念。如果您搜索「littlecat」,則精確短語搜索將只返回littlecat,反之亦然。即使谷歌貌似(果然也是如此),那並不返回「小貓咪」上littlecat搜索

0

來實現,這是動態規劃的一種方法 - 使用字典/語料庫來比較你對(以及遺留下來的話個別單詞在將文本解析爲字符串之後)。

認爲它就像你正在寫一個自定義的拼寫檢查器或類似的。在這種情況下,還有一種情況是,可能會留下多個單詞組合,例如 - 「walkingmydoginrain」 - 在這裏,您可以將第1個單詞分爲「散步」或「散步」,這是DP - 因爲你知道(從你的語料庫),你不能從「ingmydoginrain」(即字符串的其餘部分 - 你剛剛發現,在這種情況下 - 你應該選擇分段的詞作爲「步行「與不走

而且把它想不能夠找到一個匹配添加到成本函數您定義的,所以你應該得到最佳的效果 - 這意味着你可以確保你的文字(與白s不分開步)肯定會被打破成合法words- 雖然可能有不止一個可能的字序列,在該行(因此,也可能故意尋求這種

你應該能夠找到相當的人)通過網絡爲您的使用情況良好的基礎實現(也閱讀:谷歌是如何實現 - 「您是不是要找」)

就目前來看,還看 - How to split text without spaces into list of words?