首页 > 其他分享 >xunsearch 搜索时按字段索引词加权

xunsearch 搜索时按字段索引词加权

时间:2023-09-03 23:02:12浏览次数:36  
标签:加权 search 权重 xunsearch addWeight 索引 搜索 XSSearch

在使用 Xunsearch 进行搜索时,我们可以通过 XSSearch::addWeight 针对某个字段添加权重索引词。该字段是否包含这个词 都不影响搜索匹配结果,但如果包含会参与计算结果权重,使结果的相关度更高。常用于针对某一类 数据提升搜索结果排序位置。

如搜索包含 "杭州" 的结果,并且提升 subject 字段包含 "西湖" 的数据的排序

$docs = $search->setFuzzy()->setQuery('杭州')->addWeight('subject', '西湖')->search();

注意

  • 这些修饰不能应用到快捷搜索中,也就是说不能直接把 Query 语句传递给 XSSearch::search。 您必须用 XSSearch::setQuery 设置搜索语句,再用不带参数的调用 searchcount 方法。
  • 区间搜索默认用的是字节序比较,如果您希望将字段值以数字方式比较大小,请将字段的类型设置为 numeric


添加权重后导致搜索不再进行模糊搜索问题

在 上面语句中我们可以使用 setFuzzy() 方法开启模糊搜索, 但 addWeight 方法有个bug,其将搜索模式强制改为 AND 规则的非模糊搜索形式,导致搜索结果不准确。

此处可以修改 addWeight 方法进行修复

/**
	 * 添加权重索引词
	 * 无论是否包含这种词都不影响搜索匹配, 但会参与计算结果权重, 使结果的相关度更高
	 * @param string $field 索引词所属的字段
	 * @param string|array $term 索引词
	 * @param float $weight 权重计算缩放比例
	 * @return XSSearch 返回对象本身以支持串接操作
	 * @see addQueryTerm
	 */
	public function addWeight($field, $term, $weight = 1)
	{
    	# 此处将写死的 XS_CMD_QUERY_OP_AND_MAYBE 改为 $this->_defaultOp 即可
       
		return $this->addQueryTerm($field, $term, $this->_defaultOp, $weight);
	}

标签:加权,search,权重,xunsearch,addWeight,索引,搜索,XSSearch
From: https://blog.51cto.com/sdwml/7343651

相关文章

  • xunsearch 解决单字符、无意义字符被分词导致的搜索不准确问题
    Xunsearch配置好启动服务后,我们进行搜索会发现一些单字符如的、了、是、和等被分词,导致搜索结果中出现了与搜索目标不一致但包含这些字符的结果,如此会导致搜索结果不准确。对于这种问题Xunsearch提供了stopwords.txt配置文件解决这个问题,只需要将想过滤掉的字符一行一个添加......
  • 【聚集索引】和【非聚集索引】
    其实数据库软件中索引的设计灵感可以说来源于现实世界,书本前面的目录和后面的附录对应了聚簇索引和非聚簇索引,当身处计算机硬软世界里,概念过于抽象,而无法理解时,不妨跳脱出来,在现实世界中寻找参照物,或许可以豁然开朗。 ......
  • 向量搜索技术:基于Elasticsearch/PostgreSQL/Redis扩展的向量搜索数据库或独立向量搜索
    理论基础与研究向量数据库用于非结构化文本、图片、音频、视频搜索、推荐,将他们转换为数字向量表示来进行相似性(ANN)搜索。存储和搜索高维向量是其特征之一,通常采用高级索引技术和算法如HNSW,Annoy,或Faiss来实现。不同于SQL数据库,向量数据库更像nosql,用户接受使用sdk/API......
  • 重复索引检查mysql pt-duplicate-key-checker
    索引对于优化数据库中的查询执行时间至关重要,但是索引数量过多或冗余会对性能产生负面影响。虽然pt-duplicate-key-checker是识别MySQL中重复或冗余索引的首选工具,但它可能无法捕获所有重复。测试环境,mysql5.7.27建表结mysql[localhost:5727]{root}(sbtest)>CREATETABLE`sbt......
  • Lnton 羚通算法算力云平台如何在 python 中对列表进行循环修改索引操作
     Python列表修改索引任务:随机数生成文件读写数据分析,连续N个数里1出现的起止位置修改列表的循环索引可用于异常数据分析"""任务:1.随机数生成2.文件读写3.数据分析,连续N个数里1出现的起止位置4.修改列表的循环索引5.可用于异常数据分析注:该程序主要用于......
  • mysql索引(转)
    转载:https://www.php.cn/faq/493277.html一、数据结构区分1.1.B+tree索引根据存储方式,mysql可以分为B+tree索引和哈希索引B+tree索引可以进行全键值、键值范围和键值前缀查询1.2.哈希索引哈希索引也称为散列索引或 HASH索引。MySQL目前仅有MEMORY存储引擎和HEAP存......
  • 全局多项式(趋势面)与IDW逆距离加权插值:MATLAB代码
      本文介绍基于MATLAB实现全局多项式插值法与逆距离加权法的空间插值的方法,并对不同插值方法结果加以对比分析。目录1背景知识2实际操作部分2.1空间数据读取2.2异常数据剔除2.3验证集筛选2.4最小二乘法求解2.5逆距离加权法求解2.6插值精度检验2.7数据导出与专题地图制......
  • pandas-重新索引
    pandas-重新索引目录pandas-重新索引reindex()set_index()reset_index()参考资料reindex()DataFrame.reindex(self,labels=None,index=None,columns=None,axis=None,method=None,copy=True,level=None,fill_value=nan,limit=None,tolerance=None)支持两种调用-(......
  • 开心档-软件开发入门之MongoDB 高级索引
     作者简介:每天分享MongoDB教程的学习经验、和学习笔记。  座右铭:有自制力,做事有始有终;学习能力强,愿意不断地接触学习新知识。个人主页:iOS开发上架的主页前言本章将会讲解在数组中创建索引,需要对数组中的每个字段依次建立索引。所以在我们为数组tags创建索引时,会为music、cric......
  • 怎么建立和使用空间索引?
    0.为什么需要空间索引:https://www.cnblogs.com/2008nmj/p/14291508.html(提高空间查询效率)那么建立和使用空间索引呢?第一步:空间分割。 ......