Php 弹性搜索指数得分
我注意到表中的对象越多,按关键字搜索时相关性越大。例如,有两个实体,服务和新闻,服务的标题是“删除勾号”,新闻的标题是“手动删除”,我总共有1000个服务和50个新闻,如果我搜索“删除”这个词,那么服务的相关性是1200,新闻的相关性是200,如何设置ElasticSearchBundle,使元素的数量在插入过程中不起作用?我认为您不想考虑相关性计算,您可能希望同时禁用Php 弹性搜索指数得分,php,symfony,
elasticsearch,configuration,yaml,Php,Symfony,
elasticsearch,Configuration,Yaml,我注意到表中的对象越多,按关键字搜索时相关性越大。例如,有两个实体,服务和新闻,服务的标题是“删除勾号”,新闻的标题是“手动删除”,我总共有1000个服务和50个新闻,如果我搜索“删除”这个词,那么服务的相关性是1200,新闻的相关性是200,如何设置ElasticSearchBundle,使元素的数量在插入过程中不起作用?我认为您不想考虑相关性计算,您可能希望同时禁用tf idf TF-IDF考虑了单词出现的次数 看看哪些可能是您正在寻找的,哪些可以利用,以便不考虑相关性计算 下面是如何使用这
tf idf
TF-IDF考虑了单词出现的次数
看看哪些可能是您正在寻找的,哪些可以利用,以便不考虑相关性计算
下面是如何使用这两种方法构造查询:
POST <your_index_name>/_search
{
"query":{
"constant_score":{
"filter":{
"query_string":{
"query":"removal"
}
},
"boost":1.2
}
}
}
POST/\u搜索
{
“查询”:{
“恒定分数”:{
“筛选器”:{
“查询字符串”:{
“查询”:“删除”
}
},
“促进”:1.2
}
}
}
请注意,当您执行上述查询时,所有文档的恒定分数均为1.2
请注意,如果您根本不在乎分数,最好使用简单的过滤查询,它将简单地充当布尔查询
其中提到:
筛选查询不计算相关性分数。加速
性能,Elasticsearch自动缓存常用过滤器
查询
在这里您还可以看到性能的附加优势
让我知道这是否有帮助 也许可以尝试“布尔相似性”而不是tf/idf,这里有一篇关于它的好文章:
布尔模型的评分函数比tf/idf简单得多。术语是否出现在文档中。所以你有两个可能的分数:每学期1分和0分。如果您的三个术语出现在一个文档中,则此文档的分数为3,这在某些情况下更容易使用
只需在文本字段中添加“相似性”:“布尔值”,即可实现此功能:
PUT test
{
"mappings": {
"doc" : {
"properties" : {
"content" : {
"type" : "text",
"similarity" : "boolean"
}
}
}
}
}
嘿@Artem,上面的答案有用吗。你还有什么要找的吗?