热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

lucene全文检索结合用户行为优化排序结果

问题是这样的:我在做一个全文检索引擎,对数据库表建索引进行查询,然后对查询结果进行排序;查询用到这三个字段:name(名称),address(地址),visits(查询频率);其中查询频率visi
  问题是这样的:我在做一个全文检索引擎,对数据库表建索引进行查询,然后对查询结果进行排序;查询用到这三个字段:name(名称),address(地址),visits(查询频率);其中查询频率visit是动态变化的;       
   举例说明一下:我输入“测绘”,查询结果如下图,假设我想得到的结果是“省测绘局”,我点击省测绘局,会增加数据库中visit的值,我想通过visit的值来对查询结果进行排序。查询关键词和name匹配度的值为x,和address匹配度为:y,还有visit值为z,怎么建立一个数学模型:f(x,y,z)=f(x) + f(y) + f(z)?最后我根据f(x,y,z)对结果排序?x、y的值我是根据一个现成的一个开源的全文检索引擎lucene的匹配算法得到的在0~1之间,z值就是访问次数动态的在变化>0的整形。

6 个解决方案

#1


好像在复杂query的时候可以设置各个query的boost值

#2


引用 1 楼 xietingyan 的回复:
好像在复杂query的时候可以设置各个query的boost值
 我对visit的值设置boost,设置的原则是什么呢 不需要为 x、y、z建立数学模型吗?像lucene自己的评分体系那样

#3


我们平常使用不用去管那个tfidf的公式。
Lucene allows influencing search results by "boosting" in more than one level:
Document level boosting - while indexing - by calling document.setBoost() before a document is added to the index.
Document's Field level boosting - while indexing - by calling field.setBoost() before adding a field to the document (and before adding the document to the index).
Query level boosting - during search, by setting a boost on a query clause, calling Query.setBoost().
刚看了一下https://lucene.apache.org/core/3_6_2/scoring.html,说可能有三个层次的boost,前两个boost在索引的时候就boost了,
如果简单在query的时候boost,看看org.apache.lucene.search下面的各种query用法就可以

#4


引用 3 楼 xietingyan 的回复:
我们平常使用不用去管那个tfidf的公式。
Lucene allows influencing search results by "boosting" in more than one level:
Document level boosting - while indexing - by calling document.setBoost() before a document is added to the index.
Document's Field level boosting - while indexing - by calling field.setBoost() before adding a field to the document (and before adding the document to the index).
Query level boosting - during search, by setting a boost on a query clause, calling Query.setBoost().
刚看了一下https://lucene.apache.org/core/3_6_2/scoring.html,说可能有三个层次的boost,前两个boost在索引的时候就boost了,
如果简单在query的时候boost,看看org.apache.lucene.search下面的各种query用法就可以
你没明白我的意思 我是希望加入用户查询行为分析,来对结果进行重新排序,不是在lucene基础之上进行排序

#5


引用 4 楼 fancy1986 的回复:
Quote: 引用 3 楼 xietingyan 的回复:

我们平常使用不用去管那个tfidf的公式。
Lucene allows influencing search results by "boosting" in more than one level:
Document level boosting - while indexing - by calling document.setBoost() before a document is added to the index.
Document's Field level boosting - while indexing - by calling field.setBoost() before adding a field to the document (and before adding the document to the index).
Query level boosting - during search, by setting a boost on a query clause, calling Query.setBoost().
刚看了一下https://lucene.apache.org/core/3_6_2/scoring.html,说可能有三个层次的boost,前两个boost在索引的时候就boost了,
如果简单在query的时候boost,看看org.apache.lucene.search下面的各种query用法就可以
你没明白我的意思 我是希望加入用户查询行为分析,来对结果进行重新排序,不是在lucene基础之上进行排序

我理解的查询排序只能在一个过程中处理,比如要么用sql排序,要么用lucene排序,所以就是一个三个字段的查询排序呀~难道还有别的意思...

#6


引用 5 楼 xietingyan 的回复:
Quote: 引用 4 楼 fancy1986 的回复:

Quote: 引用 3 楼 xietingyan 的回复:

我们平常使用不用去管那个tfidf的公式。
Lucene allows influencing search results by "boosting" in more than one level:
Document level boosting - while indexing - by calling document.setBoost() before a document is added to the index.
Document's Field level boosting - while indexing - by calling field.setBoost() before adding a field to the document (and before adding the document to the index).
Query level boosting - during search, by setting a boost on a query clause, calling Query.setBoost().
刚看了一下https://lucene.apache.org/core/3_6_2/scoring.html,说可能有三个层次的boost,前两个boost在索引的时候就boost了,
如果简单在query的时候boost,看看org.apache.lucene.search下面的各种query用法就可以
你没明白我的意思 我是希望加入用户查询行为分析,来对结果进行重新排序,不是在lucene基础之上进行排序

我理解的查询排序只能在一个过程中处理,比如要么用sql排序,要么用lucene排序,所以就是一个三个字段的查询排序呀~难道还有别的意思...
呃,我直接对field setBoost,我怎么知道我赋值多少合适呢,我想我是不是要用什么数学模型对name-score、address-score和visit值三个影响因子分配权重呢?

推荐阅读
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 基于iSCSI的SQL Server 2012群集测试(一)SQL群集安装
    一、测试需求介绍与准备公司计划服务器迁移过程计划同时上线SQLServer2012,引入SQLServer2012群集提高高可用性,需要对SQLServ ... [详细]
  • 本文介绍了几种常用的图像相似度对比方法,包括直方图方法、图像模板匹配、PSNR峰值信噪比、SSIM结构相似性和感知哈希算法。每种方法都有其优缺点,适用于不同的应用场景。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • Spark中使用map或flatMap将DataSet[A]转换为DataSet[B]时Schema变为Binary的问题及解决方案
    本文探讨了在使用Spark的map或flatMap算子将一个数据集转换为另一个数据集时,遇到的Schema变为Binary的问题,并提供了详细的解决方案。 ... [详细]
  • 二分查找算法详解与应用分析:本文深入探讨了二分查找算法的实现细节及其在实际问题中的应用。通过定义 `binary_search` 函数,详细介绍了算法的逻辑流程,包括初始化上下界、循环条件以及中间值的计算方法。此外,还讨论了该算法的时间复杂度和空间复杂度,并提供了多个应用场景示例,帮助读者更好地理解和掌握这一高效查找技术。 ... [详细]
  • MATLAB实现Sobel边缘检测算法
    图像边缘是指图像中灰度值发生显著变化的区域。Sobel算子是一种常用的边缘检测方法,通过计算图像灰度值的梯度来检测边缘。本文介绍了Sobel算子的基本原理,并提供了基于MATLAB的实现代码。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 结城浩(1963年7月出生),日本资深程序员和技术作家,居住在东京武藏野市。他开发了著名的YukiWiki软件,并在杂志上发表了大量程序入门文章和技术翻译作品。结城浩著有30多本关于编程和数学的书籍,其中许多被翻译成英文和韩文。 ... [详细]
  • importpymysql#一、直接连接mysql数据库'''coonpymysql.connect(host'192.168.*.*',u ... [详细]
  • MySQL 5.7 学习指南:SQLyog 中的主键、列属性和数据类型
    本文介绍了 MySQL 5.7 中主键(Primary Key)和自增(Auto-Increment)的概念,以及如何在 SQLyog 中设置这些属性。同时,还探讨了数据类型的分类和选择,以及列属性的设置方法。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • 如何使用 `org.apache.tomcat.websocket.server.WsServerContainer.findMapping()` 方法及其代码示例解析 ... [详细]
  • 使用YUM命令的实用示例与详解
    本文详细介绍了使用YUM命令的实用示例,包括如何自定义YUM仓库、创建和配置自定义的repo文件,以及通过YUM命令安装HTTPD软件包的具体步骤。此外,还提供了相关命令的详细解释和常见问题的解决方案,帮助用户更好地理解和使用YUM工具。 ... [详细]
author-avatar
妩媚的谢染小妃
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有