[英]Smart search with one input
我一直在瀏覽一些社交網絡,並發現有能力通過以下方式搜索人:姓名,年齡范圍,城市,國家和性別。 有趣的是,所有這些信息都可以插入到一個由空格分隔的文本框中。 然后搜索引擎會以非常准確的方式解析它並返回結果列表。
一方面看起來很簡單:按空格拆分查詢並搜索所有相關表格。 到現在為止還挺好。 然而
題:
我們如何以這種方式拆分查詢,我們當然知道它應該在哪里搜索? 即用戶表中的名稱,城市表中的城市,國家/地區的國家/地區等?
到目前為止我所做的是:
對於每個表格等等,每次我們在表格中找到匹配項時,我們會從查詢中刪除找到的部分,為我們留下最自由的參數: 名稱 。
如果用戶確切知道我的數據庫中的城市/國家等是如何寫的,那么這似乎是有效的,但實際情況是用戶可能會進入城市的一部分或錯誤地輸入城市。
我不知道我所做的一切是否正確。 只是一個開始點......
PS:我只需要一個算法流程,因此編程語言並不真正計量。 任何想法或指導都非常受歡迎。
謝謝
這種查詢對relational databases
。 如果不是必須的話,你可以考慮使用Lucene.Net(c#)或Lucene(java)
我在這里沒有經驗,但我想這是自然語言處理
我認為做這種處理的一部分是接受你並不總能做到這一點。 由此可見,您的目標是嘗試確定您對做出某些假設充滿信心的案例。
例如,
如果一個用戶在紐約市尋找jane doe ,他們就不會把它當作jane new york city doe
,它的名字和城市總是連續的組。 您不知道每個組的長度,但是,您只需要嘗試有限數量的組合。 鑒於jane doe new york city
,您可以迭代連續組的組合。
scoreAsName('jane')
scoreAsName('jane doe')
scoreAsName('jane doe new')
...等等......並為scoreAsCity做同樣的事情。
兩者都應該有一些明確的高分組合。 也許,最好的選擇是名稱和城市得分的組合,產生最高的總和。 您需要制作一個評分算法,可能很大程度上基於數據庫匹配,但也可能使用輔助輸入,例如,提高本地名稱匹配的分數。
非常有趣的主題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.