因此,我检查了多个关于MySQL全文搜索的多个待定联合表。我现在知道,这是不可能的,因为索引不能在联合表上进行。给定的解决方案总是与两个“匹配”和/或 - 但它不能解决我的问题。在多个表上的MySQL全文搜索 - 另一个
情况如下。我得到了:
- 一个“作品”表,其中包含书名,简短描述和文字摘录。
- “作者”表,作者姓名。
由于某些原因,我必须在布尔模式下进行搜索。此外,在搜索字段中输入的单词的默认行为是AND(我通过用+替换空格来预处理请求)。
用户通常会在搜索字段中输入:“NameOfAuthor TitleOfTheBook”或“NameOfAuthor aRandomWord(他在摘录中查找)”或“TitleOfTheBook”。他希望只找出匹配他输入的所有单词的结果(以及所有这些结果)。
所以如果我:
- 匹配“作品”字段或“作者”字段,只有在“作品”表中的简短描述提及作者姓名时,我才会有答案。
如果我不预处理查询(如果我没有将“NameOfAuthor TitleOfTheBook”转换为“+ NameOfAuthor + TitleOfTheBook”),我将拥有来自一位作者的所有书籍以及包含查询字词的所有书籍,这是不适合的。
- 匹配“作品”字段和“作者”字段,我什么也没有。如果我不预处理针对“与作者匹配”部分的查询,则可能在此情况下起作用,但通常不起作用,因为它不适用于任何未提及作者姓名的搜索。
在我看来,唯一的解决方案是一个将混合作品字段和作者姓名的索引。但是不可能为联合做一个索引......情况似乎很典型,我不能相信这是一个真正的问题。所以我可能很愚蠢,但我无法解决问题。任何想法 ?我必须为此搜索创建特定的虚拟表吗?
非常感谢!
另外还有一点:我不明白MySQL为什么不实现SQLite系统:虚拟表可以是任何你想要的联合,可以按照你想要的方式进行询问......这就是它应该如何是。但也许我错过了什么? – DonRamiro