
搜索系统
搜索引擎,搜索算法
-Love-Coding-
ACL/NAACL/EMNLP/COLING审稿人,github.com/guotong1988
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ElasticSearch 的 should 其实是有默认的1分的
【代码】Elastic Search 的 should 其实是有默认的1分的。原创 2025-01-14 18:59:29 · 155 阅读 · 0 评论 -
一种基于统计的挖掘query同义词的方法
从query角度:比如用户输入同一个query之后,在tagA的items下单10次,在tagB的items下单5次,则可以给query打上tagA;从item角度:如果同一个名字的items里,统计订单来源,占比最高的是queryA,占比次高的是queryB,则queryA和queryB互为同义词的候选;或者,如果同一个tag的items里,统计订单来源,占比最高的是queryA,占比次高的是queryB,则queryA和queryB互为同义词的候选;原创 2024-12-20 09:24:02 · 225 阅读 · 0 评论 -
纯规则的搜索的排序
根据搜索词(query)的关键词完全匹配doc中的关键词,召回/搜到 多个文本结果,之后。可以设计一个可加和的基于规则的公式,多个规则加和得到排序分数,原创 2024-12-13 19:52:22 · 80 阅读 · 0 评论 -
纯规则的文本匹配
会造成解了这个badcase,出了另一个badcase的情况!针对几个badcase在那改规则,就是XJBG。对于每条数据,4个特征都是有默认值的;对于每条数据,4个特征明显是可加和的;如果要计算两文本匹配的规则匹配分数。原创 2024-12-13 17:25:10 · 113 阅读 · 0 评论 -
query的CTR特征制作
1,来自item的CTR,因为item名中有和query重合的string,这种方法显然不能反映每个query在整个搜索结果页的CTR,除非一个query得搜索结果的所有item都是一种item,才基本能用这种item名中string的CTR作为query的CTR。2,来自query在搜索结果页整个页面的CTR统计,这种方法能代表每个query在整个搜索结果页的CTR。原创 2024-12-03 17:19:41 · 179 阅读 · 0 评论 -
Lucene,建自定义key的索引,用TermQuery查询
【代码】Lucene,建自定义key的索引。原创 2024-10-31 17:43:33 · 150 阅读 · 0 评论 -
Lucene,本地运行,读索引目录时报错,An SPI class of type org.apache.lucene.codecs.Codec with name
文件内容:报错说的那个文件,原创 2024-10-31 17:19:06 · 152 阅读 · 0 评论 -
【搜索算法】做query标签 vs 做item标签 for扩召回
做query理解/标签 容易出效果,query之前没有同义词 纠错词等标签,相当于从零做,或者优化之前的query标签,而item之前已有很准的“标签”也就是item名称分词的结果。原创 2024-10-06 22:33:46 · 161 阅读 · 0 评论 -
【搜索算法】以扩召回为目标,item-tag不如query-tag能扩更多数量
如果扩召回的逻辑是:query-tag等于item-tag时,输入query召回该item,那么每个query-tag可平均召回500个item,,(1-item --> 1tag --> 1500query),如果想给item挖掘tag打上,每个item要挖掘1500个tag之多!如果item类目体系一共20个类目,每个item都有一个类目,一共有10000个item,则平均每个类目tag下有500个item,,如果一共30000个query,那么。那么给每个query打上一个类目,原创 2024-09-16 08:12:20 · 361 阅读 · 0 评论 -
ElasticSearch索引和搜索词匹配的一些细节
一个item“麦当劳”:被切词成“麦当 + 劳”原创 2024-08-28 15:51:00 · 554 阅读 · 0 评论 -
GPT4 > 搜索引擎,如同 向量召回(做得好的话) > BM25文本召回
所以向量召回的结果起码会是BM25文本召回的补充。向量召回(做得好的话)的结果是。BM25文本召回的结果是。原创 2024-07-24 14:24:53 · 137 阅读 · 0 评论 -
Lucene 英文词根处理
【代码】Lucene 英文词根处理。原创 2024-05-11 10:01:49 · 319 阅读 · 0 评论 -
【搜索算法】靠item标签召回,超越ElasticSearch+分词的baseline
要超越ElasticSearch+(item名)分词的baseline,如果都要求 有相关性的item(有token匹配),其实就是相当于优化分词,而分词优化的极限就是把 item名和query词 切分成字级token。所以标签召回,只能是相当于 扩充更多的 推荐的item。搜【健身】,搜出【哑铃】就相当于是推荐出的item。比如搜【杠铃】,搜出【哑铃】可以,原创 2024-04-12 21:02:40 · 341 阅读 · 0 评论 -
【搜索算法】加item标签扩充召回
就是热门的query词召回数量提升了10倍,但是ElasticSearch的召回数量阈值不够,item侧标签的一种来源是 item类目的同义词 直接打到item上,这些 item类目同义词 则多去覆盖 非热门的query词。同时其他的query词召回数量没有增益。原创 2024-04-12 15:29:35 · 152 阅读 · 0 评论 -
【ElasticSearch】DisMaxQueryBuilder 和 BoolQueryBuilder 的结合使用
【代码】【ElasticSearch】DisMaxQueryBuilder 和 BoolQueryBuilder 的结合使用。原创 2024-04-12 10:56:36 · 247 阅读 · 0 评论 -
ElasticSearch 的 ConstantScoreQuery 的理解
可以查找所有 匹配上(分数为1)的doc,没匹配上(分数为0)的doc不返回。原创 2024-04-11 09:21:12 · 454 阅读 · 0 评论 -
ElasticSearch 的 DisMaxQueryBuilder 的理解
就是DisMaxQueryBuilder可以用来选择出 最高的。DisMaxQueryBuilder的定义。最高分的分值是相同的,最高分的doc就只返回。原创 2024-04-10 18:21:10 · 583 阅读 · 1 评论 -
ElasticSearch 两个BoolQueryBuilder满足其中一个
【代码】ElasticSearch 两个BoolQueryBuilder满足其中一个。原创 2024-04-10 11:22:17 · 388 阅读 · 0 评论 -
ElasticSearch 的 BoolQueryBuilder 使用
【代码】ElasticSearch的BoolQueryBuilder使用。原创 2024-04-08 21:50:45 · 955 阅读 · 0 评论 -
Lucene 自定义词库
【代码】Lucene 自定义词库。原创 2024-03-11 10:00:40 · 398 阅读 · 0 评论 -
Lucene 分词 示例代码
【代码】Lucene 分词。原创 2024-03-11 09:44:54 · 274 阅读 · 0 评论 -
query作为tag打在item上,理论上能解决所有搜索的召回问题
比如搜 奶茶 在 呷哺 下单,(呷哺也在卖奶茶),有上万个 奶茶query 都在 呷哺item 下单,那么给 呷哺item 打上 奶茶tag 肯定是OK的一条数据,通过 高频query的订单 找到的query-item的绑定关系,作为训练数据,有了模型后,然后对 比如 item呷哺呷哺 进行预测出 奶茶tag。在订单越大的时候,数据是越置信的,原创 2024-02-29 19:26:18 · 493 阅读 · 0 评论 -
无人工标注 实现搜索 分词/标签召回/query改写/query-item相关性
高频/低频 用户行为(浏览/点击/下单)是相当于 已经去掉噪声 的数据,数据质量是可以的,可以一起用 比如 高频1gram+高频2gram+高频3gram+高频4gram。以 同一query 的 高频订单/低频订单,作为正负样本,训练二分类模型。这里 面馆A,面馆B 的标签 必须是已有的,都是 面类饭店,那么可以认为 牛肉面 和 牛肉拉面 是很相似的词了。然后认为 牛肉面 和 牛肉拉面 互为相似词,如果没有好的分词工具的话,训练一个文本生成模型,训练一个文本生成模型,训练一个文本生成模型。原创 2024-02-20 15:04:19 · 586 阅读 · 0 评论 -
【搜索算法】分词模型的冷启动替换
可以一起用 比如 高频1gram+高频2gram+高频3gram+高频4gram。如果没有好的分词工具的话,原创 2024-02-20 14:17:21 · 378 阅读 · 0 评论 -
基于用户搜索行为,训练query-item相关性模型
高频用户行为(点击/下单)是相当于 已经去掉噪声 的数据,数据质量是可以的,以 同一query 的 高频订单/低频订单,作为正负样本,训练二分类模型。原创 2024-02-20 11:43:36 · 583 阅读 · 0 评论 -
基于用户搜索行为,给item打上query标签 / 把query看成标签打在item上
用户搜 牛肉拉面 — 高频下单 面馆A 面馆B。用户搜 牛肉面 — 高频下单 面馆A 面馆B。然后对 面馆C 进行预测。训练一个文本生成模型,原创 2024-02-04 18:00:47 · 417 阅读 · 0 评论 -
基于用户搜索行为,寻找query的相似词/同义词/扩展词/改写词
用户搜 牛肉拉面 — 高频下单 面馆A 面馆B 面馆D。用户搜 牛肉面 — 高频下单 面馆A 面馆B 面馆C。那么可以认为 牛肉面 和 牛肉拉面 是很相似的词了。原创 2024-02-04 17:56:39 · 579 阅读 · 0 评论 -
模拟请求ElasticSearch
在这个searchBuilder变量里,对里面query变量点右侧 view按钮,在IDEA的debug模式,走到Java代码的searchBuilder,IDEA里会显示出一个json,把这个json填到。打开插件,GET的json填什么。安装chrome的这个插件。原创 2024-02-02 15:31:22 · 655 阅读 · 0 评论 -
lucene 部分更新,实例
import java.io.IOException;import java.nio.file.Paths;import java.util.ArrayList;import java.util.List;import org.apache.lucene.index.IndexReader;import org.apache.lucene.analysis.cn.smart.Smart...原创 2018-11-29 10:50:38 · 682 阅读 · 2 评论 -
tfidf python 中文 实例
from sklearn.feature_extraction.text import TfidfTransformerfrom sklearn.feature_extraction.text import CountVectorizerif __name__ == "__main__": corpus = ["我 来到 北京 清华大学", # 第一个文本切词后的结果,词之间以空格...原创 2019-07-25 10:19:37 · 2737 阅读 · 0 评论 -
python 计算1个向量和1组向量的cosine距离
import scipy.spatialimport numpy as npquery_embedding = np.array([0,0,1])corpus_embeddings = np.array([[0,0,1],[1,0,0],[0,1,0]])distances = scipy.spatial.distance.cdist([query_embedding], corpus_e...原创 2019-08-04 10:21:44 · 2072 阅读 · 0 评论 -
IR(Information Retrieval)初筛算法
https://github.com/faneshion/MatchZoo/issues/72筛出多个候选doc用lucene其中也提到SumBasic算法是在一个已选定为answer的长的doc里挑几个最重要的sentence的好办法原创 2018-05-22 16:30:23 · 3687 阅读 · 0 评论 -
Document Expansion by Query Prediction 划重点
用doc_train和query_train训练一个生成式model,doc_test过来用model生成query_test_v2,再把doc_test和query_test_v2拼起来作为doc_test_v2,还用query_test查原创 2019-07-03 09:50:49 · 611 阅读 · 0 评论 -
一个向量 和 一组向量 的attention计算,mxnet实现
user_input = mx.sym.reshape(user_input_before_reshape, shape=(-1, total_group_length, eb_dim))att_user_input = mx.sym.reshape(user_input, (bs, total_group_length, eb_dim))att_node_input = mx.sym.res...原创 2019-07-10 11:50:17 · 573 阅读 · 0 评论 -
python实现一棵树及其搜索
import numpy as npfrom scipy.spatial.distance import cosinedef findTopNindex(array,N): # return np.argsort(array)[::-1][:N] # 从大到小 return np.argsort(array)[:N] # 从小到大def cos_distance(vect...原创 2019-08-05 16:56:52 · 1370 阅读 · 0 评论 -
GEN Encoder 摘要速览
Generic Intent Representation in Web Search本文提出GEneric iNtent Encoder (GEN Encoder),为用户搜索意图训练一个向量表示,使用大规模必应搜索的用户点击日志作为用户意图的弱监督GEN Encoder 端对端的 训练将 查询和点击信息 映射到相似向量,之后再在多个任务finetune,实验在 一个 查询意图相似性 数...原创 2020-03-13 11:20:38 · 346 阅读 · 0 评论 -
IR里的Ad-hoc Retrieval的adhoc意思
The term ad-hoc refers to the scenario where documents in the collection remain relatively static while new queries are submitted to the system continually.by《A Deep Look into Neural Ranking Models f...原创 2019-08-14 17:23:27 · 2173 阅读 · 0 评论 -
locality-sensitive hashing 简单理解
LSH是为了将向量hash到多个桶里以索引以缩小计算向量相似度时的候选。原创 2021-02-18 12:13:38 · 356 阅读 · 0 评论 -
python的 MAP, RPrec, MRR, NDCG, MRR@10 计算代码
import numpy as npdef average_precision(gt, pred): """ Computes the average precision. This function computes the average prescision at k between two lists of items. Parameters ------...原创 2019-08-09 15:44:26 · 5993 阅读 · 6 评论 -
Learning to Rank for Information Retrieval 的Part1阅读笔记
Pointwise输入一个query一个doc输出一个scorePairwise输入两个doc输出一个scoreListwise输入一个query一组doc整体输出一组score原创 2019-08-13 09:07:23 · 768 阅读 · 0 评论