我有一個在線Web應用程序,帶有頂部菜單樹,用於打開用於執行不同任務的不同小部件。隨着應用程序越來越強大,該樹已變得龐大且難以導航。我實現了一個搜索功能,用戶只需鍵入菜單名稱或其中的一部分,然後使用正則表達式查找菜單樹中與用戶輸入內容相匹配的所有項目。我的正則表達式允許部分單詞和交換單詞,也限制搜索到每個單詞的開頭。它不允許的一件事是拼寫錯誤的單詞。我明白,爲了允許拼寫錯誤的單詞,最好不要使用正則表達式,而是使用字符串距離方法,但我仍然希望允許部分單詞和交換單詞。這可能嗎?Levenshtein只有部分字符串的距離(Java)
例如,如果菜單項是「財務費率維護」,則以下任何一項將與該菜單項匹配:「財務」,「財務報表」,「費率財務」等。比率「不匹配,因爲」inance「不出現在該菜單項的任何單詞的開頭。我想要像「fnane rate」和「rate maintainance」這樣的搜索,它們被拼寫錯誤地匹配。
但「inance率」 ** **是輕微的拼寫錯誤,沒有比「fnane率」更糟糕(非常接近,其實) 。爲什麼它不匹配,而後者應該?這是沒有意義的。 – 2010-08-06 19:14:14
因爲它目前的「入場率」不匹配,但我想象一旦實現了字符串距離,它會,但「比率」可能不會因爲字符串距離太大。綁定到單詞開頭的原因是因爲我有類似「vic」的搜索匹配到「地圖服務」,這是不受歡迎的,因爲有很多項目帶有「service」這個詞,但是當用戶搜索「vic」他們通常搜索名爲「VIC」的菜單項 – 2010-08-06 19:19:00