这显著地提高了web搜索引擎及更小型搜索引擎的门槛。尽管大的互联网引擎能够访问Google一样的资源,但是小系统往往没法访问大量查询日志或像HTML链接一样的文档结构,也没法使用其他用户相关反馈机制来提供对用户而言很有价值的信息。花时间构建复杂方案之前,我们给出有助于改进结果的两个关键事项。
1.用户训练:有时需要给用户展示出,通过学习一些关键语法技巧(如短语等)可以将检索结果提高到何种程度。
2.外部知识:是否存在某个指示信息使得一篇或多篇文档比其他文档更重要?例如,也许该文档是CEO写的,或者100个人中有99人将其标为有用,或者该文档的边缘收益是对比文档的五倍。不管是什么,都要想办法将这个知识编码到系统当中并作为搜索的一个因素。如果搜索系统不容许这么做,那么可能是时候构建一个新系统了!
除了用户训练和使用索引的先验知识之外,还有很多办法可以提高查询速度和精度。首先,在大部分情况下,查询词项之间应该是AND而非0R的关系。例如,用户输人的是Jumping Jack Flash,那么假设不是搜索短语的话,该查询应该转换成的等价形式为Jumping AND Jack AND Flash而不是。通过使用JAND,所有的查询词项都应该匹配。当然这种做法几乎可以肯定会提高正确率,但是可能会降低召回率。由于采用这种做法只需要对更少的文档进行评分,因此其速度肯定会更快。使用AND可能会导致零结果查询,但是如果想要结果的话之后可以回退到一个0R查询。对于简单查询AND可能不会产生足够的结果的一个唯一可能是文档集非常小(大概来讲,少于200000篇文档)。
注意 这里的AND使用并不意味着所有的搜索引擎都支持这种语法,但是Solr使用这种语法,因此为简单解释起见我们就保留这样的描述。
……
展开