【发布时间】:2014-02-21 00:17:48
【问题描述】:
我正在为我拥有的文章列表构建一个搜索引擎。很多人建议我使用弹性搜索进行全文搜索。我写了以下代码。有用。但我有一些问题。
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
【问题讨论】:
标签: python search full-text-search elasticsearch full-text-indexing