我正在研究搜索引擎。在大多数情况下,我只是使用Appache的Lucene,它目前工作得很好,但我也希望通过在搜索中建立良好的“启发式”来改进搜索结果。 (例如,如果有人搜索“沙发”并且我将所有的沙发编目为“沙发”类型,我希望搜索算法进行连接。)
我知道这听起来有点模糊,但我不知道在这项研究中哪里继续寻找进一步阅读。 (我用谷歌搜索的术语,如'启发式搜索','启发式功能'等,但它们并不是指同一件事。)所以,我想知道你们中是否有人在搜索引擎中遇到类似的问题,如果你愿意的话。
答案 0 :(得分:1)
在我脑海中突然出现的一个“快速肮脏”黑客可以是实现一个在上下文中保持相似性的字典。例如使沙发和沙发组相似。或者更好的方法可以是构建方阵以保持每个单词对的“相似性得分”。这是关于我的意思的随机矩阵:
couch sofa chair
couch | 100 | 95 | 75 |
sofa | 95 | 100 | 65 |
chair | 75 | 65 | 100 |
另一种方法可以通过用户选择自适应地更新该矩阵。例如如果用户搜索沙发然后单击主席,那么您可以按照定义的阈值增加沙发椅分数(当然,您还应该在每次更新后重新规范所有分数)。
答案 1 :(得分:1)
我必须为我的人工智能课构建类似的东西。我构建了一个网络爬虫,它将单词的同义词与您想要的内容相关联。当用户搜索诸如“沙发”之类的术语时,我抓住沙发的所有同义词并将其存储在数据库中并引用原始单词。当引擎再次运行并且“沙发”被搜索时,应用程序将再次获取“沙发”的同义词(这是沙发的同义词)。然后,您应该能够匹配该关联。
有很多免费的api可以获得一个单词的同义词。尝试将您的Google搜索更改为主题特定网络抓取工具,或主题特定搜索引擎。您将收集更好的结果