相关网页为https://www.christart.com/poetry/
我有一个MySQL表,其中有超过7,000条诗歌记录。我收到了来自我的用户的请求,以便能够对他们的诗歌进行查询。但它们保存在“文本”列中。
我知道如何编写SQL语句。这很容易。我担心的是数据库的负载。我总是索引查询或加入的列。但无法索引“文本”列。
一定有办法。我该怎么做呢?
答案 0 :(得分:3)
您可以使用full text index:
CREATE FULLTEXT INDEX poem_contents ON poems(body);
然后使用match
进行搜索:
SELECT *
FROM poems
WHERE MATCH(body) AGAINST ('some phrase' IN BOOLEAN MODE)
答案 1 :(得分:1)
没有理由不能索引文本字段。话虽这么说,索引一个包含整首诗的文本字段可能没什么价值。
如果您的数据库只有7,000行,那么除非您的扩展规模比目前大得多,否则您可能不会看到巨大的性能损失。对于更大的规模,更好的解决方案可能是从正文中提取关键字并搜索这些关键字。
答案 2 :(得分:0)
我认为你必须探索Apache Lucene或提供全文搜索的类似项目。或者你可以检查mongodb而不是mysql。它有多种索引类型。还有Solr / ElasticSearch,后面使用Lucene。
诗体,我假设,它将以varchar类型存储。我不知道varchar上可能的索引编程是不是&不要认为对整个诗体进行索引是明智的。像Lucene / Solr这样的东西提供了更好的选择。
请注意,我与上述任何产品无关。