2009-08-10 26 views
3

這是我正在嘗試做的。SQLite查詢 - 需要幫助全文搜索

用戶(a): 在兩個字段(描述-1)和(描述-2)中輸入數據。

用戶(b)在相反的字段中輸入類似的數據。

用戶(a)或(b)在兩個字段上搜索都會找到匹配項。

一個很好的比喻就是約會搜索。用戶(a)輸入他們自己的描述和他們正在尋找的匹配,並且用戶(b)輸入他們自己和他們正在尋找的匹配的描述,並且兩者都能夠進行搜索並找到匹配。

所以在僞查詢英語...

從數據選擇名稱,其中我=「目標」和目標=「我」

美中不足的是,一些字在該領域將匹配, 但不是所有的。

+0

是自由表單中輸入的信息,或者是重新構建它的任何結構? – 2009-08-11 00:02:44

+0

該數據是由用戶自由輸入的。如果數據是結構化的,是否有其他選擇? – Jordan 2009-08-11 00:05:40

+0

@Jordan好吧,任何結構都可以讓它更容易,幾乎可以根據定義。 – 2009-08-11 01:18:02

回答

5

無論什麼技術,這種類型的匹配都很難。你可能已經咬掉了超過你可以咀嚼的東西。

我向你推薦的是閱讀PostgreSQL中的​​數據類型。
PostgreSQL爲全文搜索提供了一個靈活而強大的解決方案,它可以滿足您的需求,而SQLite可能不會。

使用PostgreSQL tsquerytsvectordata types,您可以將一個用戶的描述轉換爲查詢其他用戶描述的表單。 tsquery和tsvector都可以動態生成或保存在數據庫列中並建立索引。

如果您仍然需要使用SQLite,您需要了解各種FTS虛擬表類型。這些都是實驗性的,默認情況下不啓用。所以你需要重新編譯SQLite,啓用FTS1,FTS2或FTS3。

這些功能的文檔相當稀少。這裏的一切,我發現: