【问题标题】:Improving a search engine改进搜索引擎
【发布时间】:2012-01-29 13:36:18
【问题描述】:

我正在开发一个搜索引擎。在大多数情况下,我只是使用 Appache 的 Lucene,它目前运行良好,但我还想通过在搜索中建立良好的“启发式”来改进搜索结果。 (例如,如果有人搜索“沙发”,而我将所有沙发都归为“沙发”类型,我希望搜索算法能够建立联系。)

我知道这听起来有点含糊,但我不知道在哪里可以继续搜索以在这项研究中找到进一步的阅读材料。 (我用谷歌搜索了“启发式搜索”、“启发式函数”等术语,但它们所指的不是我。)所以,我想知道你们中是否有人在搜索引擎中解决过类似的问题,如果你有什么建议的话。

【问题讨论】:

    标签: search search-engine heuristics


    【解决方案1】:

    我必须为我的人工智能课程构建类似的东西。我构建了一个网络爬虫,它将与您想要做的类似的单词的同义词关联起来。当用户搜索诸如“沙发”之类的术语时,我抓取了沙发的所有同义词并将它们存储在数据库中,并引用原始词。当引擎再次运行并搜索“沙发”时,应用程序将再次获取“沙发”的同义词(沙发的同义词)。然后,您应该能够匹配该关联。

    有很多免费的 api 可以获取单词的同义词。尝试将您的谷歌搜索更改为特定主题的网络爬虫或特定主题的搜索引擎。你会收集到更好的结果

    【讨论】:

    • 感谢 tkcsam 的帮助。这回答了我的问题。如果我知道如何将问题标记为已解决,在这种情况下我肯定会!
    【解决方案2】:

    在我脑海中突然出现的“quick n'dirty”技巧之一可能是实现一个在上下文中包含相似性的字典。例如使沙发和沙发组相似。或者更好的方法可能是建立一个方阵来保存每个单词对的“相似度分数”。这是关于我的意思的随机矩阵:

            couch   sofa   chair
    couch |  100  |   95 |   75  |
    sofa  |   95  |  100 |   65  |
    chair |   75  |   65 |  100  |
    

    另一种方法是通过用户选择自适应地更新该矩阵。例如如果用户搜索沙发然后点击椅子,那么您可以将沙发椅分数增加一个定义的阈值(当然,您还应该在每次更新后重新归一化所有分数)。

    【讨论】:

    • 这是个好主意,奥斯曼!对于我想做的事情来说,这听起来有点沉重,但它给了我很好的想法,谢谢!
    猜你喜欢
    • 2017-05-15
    • 2014-04-29
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    • 2011-09-15
    • 2015-04-03
    • 2011-07-01
    相关资源
    最近更新 更多