因此,我檢查了多個關於MySQL全文搜索的多個待定聯合表。我現在知道,這是不可能的,因爲索引不能在聯合表上進行。給定的解決方案總是與兩個「匹配」和/或 - 但它不能解決我的問題。在多個表上的MySQL全文搜索 - 另一個
情況如下。我得到了:
- 一個「作品」表,其中包含書名,簡短描述和文字摘錄。
- 「作者」表,作者姓名。
由於某些原因,我必須在布爾模式下進行搜索。此外,在搜索字段中輸入的單詞的默認行爲是AND(我通過用+替換空格來預處理請求)。
用戶通常會在搜索字段中輸入:「NameOfAuthor TitleOfTheBook」或「NameOfAuthor aRandomWord(他在摘錄中查找)」或「TitleOfTheBook」。他希望只找出匹配他輸入的所有單詞的結果(以及所有這些結果)。
所以如果我:
- 匹配「作品」字段或「作者」字段,只有在「作品」表中的簡短描述提及作者姓名時,我纔會有答案。
如果我不預處理查詢(如果我沒有將「NameOfAuthor TitleOfTheBook」轉換爲「+ NameOfAuthor + TitleOfTheBook」),我將擁有來自一位作者的所有書籍以及包含查詢字詞的所有書籍,這是不適合的。
- 匹配「作品」字段和「作者」字段,我什麼也沒有。如果我不預處理針對「與作者匹配」部分的查詢,則可能在此情況下起作用,但通常不起作用,因爲它不適用於任何未提及作者姓名的搜索。
在我看來,唯一的解決方案是一個將混合作品字段和作者姓名的索引。但是不可能爲聯合做一個索引......情況似乎很典型,我不能相信這是一個真正的問題。所以我可能很愚蠢,但我無法解決問題。任何想法 ?我必須爲此搜索創建特定的虛擬表嗎?
非常感謝!
另外還有一點:我不明白MySQL爲什麼不實現SQLite系統:虛擬表可以是任何你想要的聯合,可以按照你想要的方式進行詢問......這就是它應該如何是。但也許我錯過了什麼? – DonRamiro