gpt4 book ai didi

python - ElasticSearch和Python-正确的方法

转载 作者:行者123 更新时间:2023-12-03 02:08:26 25 4
gpt4 key购买 nike

我正在为我的文章列表建立搜索引擎。许多人建议我使用 Elasticsearch 进行全文搜索。我写了下面的代码。有用。但是我有几个问题。

1)如果两次添加相同的文章-即对同一文章运行indexdoc两次,它将接受它并将文章添加两次。有没有办法在搜索索引中有一个“唯一关键字”。

2)如何更改评分/排名功能?我想更加重视头衔吗?

3)这是正确的方法吗?

4)如何显示相关结果-如果存在拼写错误?

from elasticsearch import Elasticsearch
from crsq.models import ArticleInfo

es = Elasticsearch()

def indexdoc(articledict):

doc = {
'text': articledict['articlecontent'],
'title' : articledict['articletitle'],
'url': articledict['url']
}

res = es.index(index="article-index", doc_type='article', body=doc)


def searchdoc(keywordstr):
res = es.search(index="article-index", body={"query": {"query_string": {"query": keywordstr}}})
print("Got %d Hits:" % res['hits']['total'])
for hit in res['hits']['hits']:
print("%(url)s: %(text)s" % hit["_source"])

def indexurl(url):

articledict = ArticleInfo.objects.filter(url=url).values()
if len(articledict):
indexdoc(articledict)
return

最佳答案

1)您必须为您的文档指定一个ID。索引时必须添加参数id

res = es.index(index="article-index", doc_type='article', body=doc, id="some_unique_id")

2)有多种方法可以执行此操作,但是例如,您可以通过稍微更改查询来增加标题:
{"query": {"query_string": {"query": keywordstr, "fields" : ["text", "title^2"]}}

通过此更改, title将具有字段 text的重要性的两倍。

3)作为概念证明还不错。

4)这是一个很大的话题,我认为您应该检查 suggesters的文档

关于python - ElasticSearch和Python-正确的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21426953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com