gpt4 book ai didi

solr - 有没有一种方法可以使用 lucene 根据搜索查询发现单词的相关性

转载 作者:行者123 更新时间:2023-11-30 08:50:13 25 4
gpt4 key购买 nike

全部:

请问有没有办法可以使用lucene根据搜索历史进行搜索关键词相关性发现?

例如:

该代码可以读取用户搜索字符串,对其进行解析,提取关键字并找出搜索时哪些单词最有可能组合在一起。

当我尝试 Solr 时,我发现 lucene 有很多文本分析功能,这就是为什么我想知道是否有任何方法可以使用它并与其他机器学习库(如果需要)结合来实现我的目标目标。

谢谢

最佳答案

是和否。

是的。

它应该可以工作。只需将每个关键字视为一个文档,然后使用 MoreLikeThis lucene 的功能,它根据原始查询中的术语动态构建 lucene 查询。然后使用 lucenue 查询在索引中查找其他相似文档(关键字)。

MoreLikeThis mlt = new MoreLikeThis(reader); // Pass the index reader
mlt.setFieldNames(new String[] {"keywords"}); // specify the field for similarity

Query query = mlt.like(docID); // Pass the doc id
TopDocs similarDocs = searcher.search(query, 20); // Use the searcher
if (similarDocs.totalHits == 0)
// Do handling
}

假设在您的索引关键字中,您有这样的关键字

iphone 6
apple iphone
iphone on sale
apple and fruit
apple and pear

当您使用“iphone”发起查询时,由于“iphone”的完整术语匹配,我相信您会发现上面的前三个关键字“最相似”。

没有。

lucene 中的默认相似度函数永远不会理解 iphone 与 Apple Inc 相关,因此 iphone 与“apple store”相关。如果您的原始查询只是“apple store”,则当前关键字内的理想搜索结果如下(按相关性从高到低排序):

apple iphone
iphone 6
iphone on sale

不幸的是,您将得到以下结果:

apple iphone
apple and fruit
apple and pear

第一个很棒,但其他两个完全无关。要获得真实相关性发现(使用语义),您需要做更多工作topic modeling 。如果您碰巧有一个很好的方法(例如,预先训练的 LDA 模型或 wordvec )来预处理每个关键字并生成主题 id 列表,您可以将这些主题 id 存储在单独的字段中,每个字段包含关键字文档。如下所示:

[apple iphone]      ->  topic_iphone:1.0, topic_apple_inc:0.8
[apple and fruit] -> topic_apple_fruit:1.0
[apple and pear] -> topic_apple_fruit:0.99, topic_pear_fruit:0.98

其中每个关键字还映射到一些具有权重值的主题 ID。

在查询时,您应该运行相同的主题建模工具来生成原始查询的主题 ID 及其术语。例如,

[apple store]       ->  topic_apple_inc:0.75, topic_shopping_store:0.6

现在您应该结合两个字段(关键字和主题)来计算整体相似度。

关于solr - 有没有一种方法可以使用 lucene 根据搜索查询发现单词的相关性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29930147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com