簡體   English   中英

一鍵輸入智能搜索

[英]Smart search with one input

我一直在瀏覽一些社交網絡,並發現有能力通過以下方式搜索人:姓名,年齡范圍,城市,國家和性別。 有趣的是,所有這些信息都可以插入到一個由空格分隔的文本框中。 然后搜索引擎會以非常准確的方式解析它並返回結果列表。

一方面看起來很簡單:按空格拆分查詢並搜索所有相關表格。 到現在為止還挺好。 然而

  1. 有些城市的名稱超過2個單詞,用戶可能會以不同的方式輸入它們,因為它是自由文本。
  2. 有超過2個單詞的名稱

題:

我們如何以這種方式拆分查詢,我們當然知道它應該在哪里搜索? 即用戶表中的名稱,城市表中的城市,國家/地區的國家/地區等?

到目前為止我所做的是:

  1. 向所有用戶填寫用戶數據源
  2. 檢查查詢中是否存在Country from Countries表
  3. 如果存在則過濾數據源以僅允許來自該國家/地區的用戶
  4. 檢查查詢中是否存在Cities表
  5. 如果存在則過濾數據源以僅允許來自該城市的用戶

對於每個表格等等,每次我們在表格中找到匹配項時,我們會從查詢中刪除找到的部分,為我們留下最自由的參數: 名稱

如果用戶確切知道我的數據庫中的城市/國家等是如何寫的,那么這似乎是有效的,但實際情況是用戶可能會進入城市的一部分或錯誤地輸入城市。

我不知道我所做的一切是否正確。 只是一個開始點......

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM