Mysql 使用Solr等搜索短字段,或使用直接DB索引
我的网站存储了数百万个实体。访问者通过键入仅包含在标题中的单词来搜索实体。标题最多100个字符。 这不是典型的文档搜索,用户在大blob中搜索。 田地很短。此外,这里的主要问题是性能(而不是相关性),因为实体是“按您的输入”(自动建议)提供的。 哪条路线更明智Mysql 使用Solr等搜索短字段,或使用直接DB索引,mysql,search,full-text-search,solr,xapian,Mysql,Search,Full Text Search,Solr,Xapian,我的网站存储了数百万个实体。访问者通过键入仅包含在标题中的单词来搜索实体。标题最多100个字符。 这不是典型的文档搜索,用户在大blob中搜索。 田地很短。此外,这里的主要问题是性能(而不是相关性),因为实体是“按您的输入”(自动建议)提供的。 哪条路线更明智 创建一个MySql表[word,entity_id],对“word”进行索引,然后使用 从搜索索引中选择实体id,其中有类似“[query\u word]”的单词 这显然需要我将每个标题分解为单词,并为每个单词添加一行。 使
- 创建一个MySql表[word,entity_id],对“word”进行索引,然后使用
从搜索索引中选择实体id,其中有类似“[query\u word]”的单词
这显然需要我将每个标题分解为单词,并为每个单词添加一行。 - 使用Solr或类似的搜索引擎,从我的阅读来看,这些搜索引擎更倾向于全文搜索
谢谢大家! 仅数据库解决方案的专业版:
- 更少的设置和维护(您已经有了数据库)
- 如果您想将搜索结果与其他数据合并或以其他方式操作它们,您可以在数据库中以本机方式进行操作
- 没有时间延迟(如果您定期将Solr与数据库同步)或维护过程(如果您选择在将Solr中的条目插入数据库的任何位置实时添加/更新条目)
- 性能:Solr处理缓存,而且开箱即用
- 拼写检查-如果你打算做拼写检查类型的东西,Solr会以本机方式处理
- Solr的设置和调优并不十分痛苦,但如果您熟悉Java应用程序服务器,这会有所帮助
- 虽然你似乎有一些简单的要求,但我认为你已经具备了搜索单词的逻辑;索尔做得很好
我可以告诉你,我们在网站上使用Solr,我们喜欢它的性能,我们甚至使用它进行非常简单的查找。但是,我们缺少的一件事是将Solr数据与数据库数据结合起来的方法。而且还有额外的维护。最后,没有一个简单的答案。感谢您详细的回答!在bo上使用%有问题因为索引只有在最左边的前缀已知的情况下才会使用。我认为你关于未来需求(比如拼写检查)的观点非常正确。我想我会让Solr试试:)