Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用Solr等搜索短字段,或使用直接DB索引_Mysql_Search_Full Text Search_Solr_Xapian - Fatal编程技术网

Mysql 使用Solr等搜索短字段,或使用直接DB索引

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]”的单词 这显然需要我将每个标题分解为单词,并为每个单词添加一行。 使

我的网站存储了数百万个实体。访问者通过键入仅包含在标题中的单词来搜索实体。标题最多100个字符。

这不是典型的文档搜索,用户在大blob中搜索。 田地很短。此外,这里的主要问题是性能(而不是相关性),因为实体是“按您的输入”(自动建议)提供的。

哪条路线更明智

  • 创建一个MySql表[word,entity_id],对“word”进行索引,然后使用
    从搜索索引中选择实体id,其中有类似“[query\u word]”的单词
    这显然需要我将每个标题分解为单词,并为每个单词添加一行。
  • 使用Solr或类似的搜索引擎,从我的阅读来看,这些搜索引擎更倾向于全文搜索
另外,如果我将来想介绍拼写建议,这会对我有什么影响


谢谢大家!

仅数据库解决方案的专业版:

  • 更少的设置和维护(您已经有了数据库)
  • 如果您想将搜索结果与其他数据合并或以其他方式操作它们,您可以在数据库中以本机方式进行操作
  • 没有时间延迟(如果您定期将Solr与数据库同步)或维护过程(如果您选择在将Solr中的条目插入数据库的任何位置实时添加/更新条目)
Solr解决方案的专业版:

  • 性能:Solr处理缓存,而且开箱即用
  • 拼写检查-如果你打算做拼写检查类型的东西,Solr会以本机方式处理
  • Solr的设置和调优并不十分痛苦,但如果您熟悉Java应用程序服务器,这会有所帮助
  • 虽然你似乎有一些简单的要求,但我认为你已经具备了搜索单词的逻辑;索尔做得很好
<>你也可以考虑未来的需求。(如果您的文档最终不仅仅是一个标题字段,并且您希望分配某种关联性,该怎么办?如果您决定允许人们搜索这些实体的正文和/或您希望索引其他文档类型,如MS Word,该怎么办?如果您想分面搜索结果,该怎么办?Solr擅长所有这些)

我不确定是否需要为数据库中的每个单词创建一个条目,而不管怎样,如果要用每个单词创建记录,只需“%[query\u word]”搜索即可。对于初学者来说,使用数据库可能更简单,因为要求似乎相当简单。扩展数据库性能应该相当容易


我可以告诉你,我们在网站上使用Solr,我们喜欢它的性能,我们甚至使用它进行非常简单的查找。但是,我们缺少的一件事是将Solr数据与数据库数据结合起来的方法。而且还有额外的维护。最后,没有一个简单的答案。

感谢您详细的回答!在bo上使用%有问题因为索引只有在最左边的前缀已知的情况下才会使用。我认为你关于未来需求(比如拼写检查)的观点非常正确。我想我会让Solr试试:)