Solr 有没有一种方法可以使用lucene在搜索查询的基础上发现单词的相关性

Solr 有没有一种方法可以使用lucene在搜索查询的基础上发现单词的相关性,solr,lucene,machine-learning,autosuggest,Solr,Lucene,Machine Learning,Autosuggest,全部: 我想知道是否有任何方法可以使用lucene根据搜索历史进行搜索关键字相关性发现 例如: 代码可以读入用户搜索字符串,对其进行解析,提取关键字,并找出搜索时哪些单词最有可能组合在一起 当我尝试Solr时,我发现lucene有很多文本分析功能,这就是为什么我想知道是否有任何方法可以使用它并与其他机器学习库(如果必要)结合来实现我的目标 谢谢是和否 对 它应该会起作用。只需将每个关键字视为一个文档,然后使用lucene的特性,该特性根据原始查询中的术语动态构造lucene查询。然后使用luce

全部:

我想知道是否有任何方法可以使用lucene根据搜索历史进行搜索关键字相关性发现

例如:

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

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

谢谢

是和否

对 它应该会起作用。只需将每个关键字视为一个文档,然后使用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与苹果公司相关,因此iphone与“苹果商店”相关。如果您的原始查询只是“apple store”,那么您当前关键字中的理想搜索结果如下(按相关性从高到低排列):

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

apple iphone
apple and fruit
apple and pear
第一个很好,但是其他两个完全不相关。要获得真实的相关性发现(使用语义),您需要做更多的工作。如果您碰巧有一种很好的方法(例如,预先训练的模型或)来预处理每个关键字并生成主题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

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

只是随便告诉我lucene和solr的情况。总体而言,你给我谷歌的新主题给了我很多帮助,谢谢!
[apple store]       ->  topic_apple_inc:0.75, topic_shopping_store:0.6