2011-11-23 59 views
1

我目前正在練習使用獅身人面像,除了我正在嘗試做的配置外,我還做了很多工作。 sql_query的關鍵是讓我有些困惑,放在那裏,我在獅身人面像documentation of sql_query閱讀,但它似乎並沒有清楚我的頭腦知道該怎麼做,因爲我有很多選擇在我的Web應用程序,我想使用獅身人面像對於我的搜索和SQL經常改變(在用戶搜索過濾時)。第一次使用獅身人面像 - 配置sql_query鍵

在我使用MySQL進行搜索時,我想將Sphinx集成到我的Web應用程序中,如果sql_key不是可選的,我是否必須期望將整個搜索SQL查詢放入該字段中,還是挑出必要的從表中的字段開始重新索引?

有人能指引我走向正確的方向,所以我可以用Sphinx和我的web應用程序讓事情順利。

回答

1

sql_query是強制性的,它由sphinx運行,以獲取您想從MySQL索引的數據。你可以有連接,條件等,必須是有效的sql查詢。你應該有一個像「SELECT id,field1,field2,fieldx from table」的東西。 id必須是主ID,這個查詢返回的每一行都被認爲是一個文檔(在搜索時由sphinx返回)。 如果你有多個表(這是非常不同的意義 - 用戶,文章等) - 你需要爲每個表創建一個索引。 從這裏閱讀教程:http://sphinxsearch.com/info/articles/瞭解獅身人面像如何工作。

0

您可以創建一個sql查詢來從數據庫中獲取聯合記錄集。如果您執行多表連接和查詢以選擇最佳結果集,則也可以使用Sphinx來完成。

您可能會在數據庫中的現有表結構中遇到一些麻煩。

像:

  • 基表不具有整數主鍵字段

    創建具有兩個字段的新表。一個用於整數ID字段,另一個用於保存基表的主鍵。對該表執行內部連接並從該表中選擇id字段。例如, SELECT t1.id, t2.name, t2.description, t2.content FROM table_new t1 INNER JOIN table_2 t2 WHERE t1.document_id = t1.thread_id INNER JOIN REST_OF_YOUR_SELECT_QUERY

    ta.id用於Sphinx搜索引擎執行其內部索引。

  • 您通過將WHERE子句和過濾

    可以通過設置動態地基於所述條件的過濾器做,在斯芬克斯過濾數據。

  • 您選擇並加入不同的表,得到的結果

    這也可以通過設置根據您的要求不同來源和指標來完成。

希望這可以幫助您瞭解需要添加和修改的內容,從而開始思考如何將Sphinx搜索引擎配置爲您的需求。如果您需要更多幫助,請再來這裏。