数据库 – 高性能分层文本搜索
我现在正处于升级主要交易系统中的层次结构设计的最后阶段,我已经在这150行查询中盯着我看了一段时间(我将免除你阅读的所有麻烦)并认为那里必须是一个更好的方式.
该问题的快速摘要如下: 您将如何实现层次结构搜索,该搜索匹配层次结构中不同级别的多个搜索项,并针对最快的搜索时间进行了优化? 我找到了一个somewhat related question,但它实际上只有我实际需要的答案的20%左右.这是完整的场景/规范: >最终目标是在层次结构中的任意位置找到一个或多个任意项. 我的“梦想”是向用户提供即时反馈,如渐进式搜索/过滤器,但我知道这可能是不可能的或非常困难的.我对当前方法的任何重大改进感到满意,通常需要0.5s到1s,具体取决于结果的数量. 为了完整起见,现有查询(存储过程)首先收集包含最终术语的所有叶节点,然后向上连接并排除其路径与先前术语不匹配的任何路径.如果这对任何人来说都是落后的,那么请放心,这比从根源开始并散开更有效率.这是“旧的”方式,每次搜索可能需要几秒钟. 所以我的问题再次出现:是否有更好(更有效)的方式来执行此搜索? 我不一定在寻找代码,只是方法.我考虑了一些可能性,但它们似乎都有一些问题: >创建一个分隔的“路径文本”列,并使用全文搜索对其进行索引.麻烦的是,对此列的搜索也将返回所有子节点; “aaron house”也与“aaron house kitchen”和“aaron house basement”相匹配. 如果我不能做得比现有的更好,那真的不是世界末日;搜索“相当快”,没有人抱怨它.但是我愿意打赌以前有人已经解决了这个问题并且有一些想法.请分享一下! 解决方法看看Apache Lucene.您可以使用Lucene实现非常灵活且高效的搜索.它可能很有用.另请参阅搜索模式 – 您所描述的内容可能适合分面搜索模式. 实现一个简单的“Aaron House Living Door”算法非常容易,但不能确定基于SVM /分类/熵的常规算法可以扩展到大型数据集.您可能还想看看Motwani和Raghavan的“近似搜索”概念. 如果可能的话,请回复你找到的内容:-) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |