Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ElasticSearch和Python-正确的方法学_Python_Search_Full Text Search_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Full Text Indexing - Fatal编程技术网 elasticsearch,full-text-indexing,Python,Search,Full Text Search,elasticsearch,Full Text Indexing" /> elasticsearch,full-text-indexing,Python,Search,Full Text Search,elasticsearch,Full Text Indexing" />

ElasticSearch和Python-正确的方法学

ElasticSearch和Python-正确的方法学,python,search,full-text-search,elasticsearch,full-text-indexing,Python,Search,Full Text Search,elasticsearch,Full Text Indexing,我正在为我的文章列表建立一个搜索引擎。很多人建议我使用弹性搜索进行全文搜索。我编写了以下代码。它起作用了。但我有几个问题 1) 如果同一个项目添加了两次,也就是说,indexdoc为同一个项目运行了两次,那么它将接受该项目并添加两次该项目。有没有办法在搜索索引中有一个“唯一键” 2) 如何更改评分/排名功能?我想更重视标题 3) 这是正确的方法吗 4) 如果有拼写错误,如何显示相关结果 from elasticsearch import Elasticsearch from crsq.model

我正在为我的文章列表建立一个搜索引擎。很多人建议我使用弹性搜索进行全文搜索。我编写了以下代码。它起作用了。但我有几个问题

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"]}}
通过此更改,
标题
将具有该字段的双重重要性
文本

3) 作为一个概念的证明是不错的

4) 这是一个很大的话题,我认为你应该检查