Skip to content

Commit

Permalink
modify search backend
Browse files Browse the repository at this point in the history
  • Loading branch information
APTX-4869-MDZZ committed Aug 25, 2017
1 parent 8f5ac08 commit 8d739e4
Show file tree
Hide file tree
Showing 34 changed files with 28,339 additions and 9 deletions.
1 change: 1 addition & 0 deletions 1.json

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions 1.txt

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion BioDesignVer/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@
'projectManage',
'design',
'system',
'geneRelationship'
'geneRelationship',
'biosearch'
]

MIDDLEWARE = [
Expand Down
1 change: 1 addition & 0 deletions BioDesignVer/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
url(r'^design/', include('design.urls')),
url(r'^system/', include('system.urls')),
url(r'^geneRelationship/', include('geneRelationship.urls')),
url(r'^biosearch/', include('biosearch.urls')),
]

urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Empty file added biosearch/__init__.py
Empty file.
3 changes: 3 additions & 0 deletions biosearch/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from django.contrib import admin

# Register your models here.
5 changes: 5 additions & 0 deletions biosearch/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from django.apps import AppConfig


class BiosearchConfig(AppConfig):
name = 'biosearch'
19 changes: 19 additions & 0 deletions biosearch/asciitest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from elasticsearch import Elasticsearch
es = Elasticsearch()
_keyword = "Environment"
_track = "Environment"
_query = {
"query": {
"bool":{
"should":{
"multi_match": {
"query": _keyword,
"fields":["attribution"]
}
},
"must":{"match": {"track": _track}}
}
}
}
_searched = es.search(index='search_index3', doc_type='searchtest3',body=_query)
print (_searched)
169 changes: 169 additions & 0 deletions biosearch/esfunc.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
# -*- coding:utf-8 -*-
from elasticsearch import Elasticsearch
import chardet
import json
es = Elasticsearch()
fields = ["attribution","background","description","design","human_practice","modeling","notebook","protocol","result","safety","keywords"]
def getdetailbyid(_id):
_query = {
"size": 1,
"query": {
"match": {
"_id":_id
}
}
}
_searched = es.search(index='team_wiki', doc_type='wiki',body=_query)
# _increment = {
# "script": {
# "inline": "ctx._source.hits++",
# "lang": "painless"
# },
# "query": {
# "term": {
# "_id": _id
# }
# }
# }
# _s = {
# "script": {
# "inline": "ctx._source.hits += params.count",
# "lang": "painless",
# "params": {
# "count": 1
# }
# }
# }
# # es.update(index='bio_search_index', doc_type='bio_search',id=_id,body=_s)
# es.update_by_query(index='bio_search_index', doc_type='bio_search',body=_increment)
return _searched['hits']['hits']

def getanswer(_keyword,_track1):

# if _track1 != '':
# _query['query']=({"match":{"track":_track1}})
_query = {
"size": 5000,
"query": {
"bool":{
"filter":[{
"terms": {
"track": _track1
}
}],
"must":[{
"multi_match":{
"query": _keyword,
"fields": [
"attribution",
"background",
"description",
"design",
"human_practice",
"modeling",
"notebook",
"protocol",
"result",
"safety",
"keywords"
],
"fuzziness" : "AUTO"
}
}
]
}
},
"highlight": {
"pre_tags" : ["<b>"],
"post_tags" : ["</b>"],
"fragment_size" : 150,
"fields": {
"attribution":{},
"background":{},
"description":{},
"design":{},
"human_practice":{},
"modeling":{},
"notebook":{},
"protocol":{},
"result":{},
"safety":{},
"keywords":{}
}
}
}
_searched = es.search(index='team_wiki', doc_type='wiki',body=_query)
file = open("1.json","w",encoding="utf-8")
file.write(json.dumps(_searched))
file.close()
searchsort = biosort(_searched)
searchfilter = filter(searchsort)
return searchfilter

def filter(searchsort):
searchfilter = []
for i in searchsort:
# print (i)
abstract = ""
if i['_source']['attribution']!="":
abstract = i['_source']['attribution']
elif i['_source']['background']!="":
abstract = i['_source']['background']
elif i['_source']['description']!="":
abstract = i['_source']['description']
elif i['_source']['design']!="":
abstract = i['_source']['design']
highlight = i['highlight']
for field in highlight.keys():
highlight[field] = highlight[field][:1]
tmp = {
'id':i['_id'],
'title':i['_source']['year']+'-'+i['_source']['team_name'],
'keywords':i['_source']['keywords'],
'abstract':abstract,
'highlight': highlight,
'score':i['_score'],
'hits': i['_source']['hits'],
}
# print (tmp)
searchfilter.append(tmp)
return searchfilter

def biosort(searched):
search = searched['hits']['hits']
#score 重新计算并排序
search.sort(key = lambda x:x['_score']+x['_source']['hits'],reverse=True)
return search

def getPart(keyword):
query = {
"from" : 0,
"size" : 10,
"query" : {
"multi_match" : {
"fields" : ["part_name", "part_type", "short_desc"],
"query" : keyword,
"fuzziness" : "AUTO",
}
}
}
_searched = es.search(index="biodesigners", doc_type="parts", body=query)
return _searched["hits"]["hits"]

def getTeamWiki(teamIds):
query = {
"size": 1,
"query": {
"bool": {
"filter": {
"terms": {
"_id": teamIds
}
}
}
}
}

_searched = es.search(index='team_wiki', doc_type='wiki',body=query)
teams = filter(_searched)
return teams
41 changes: 41 additions & 0 deletions biosearch/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.3 on 2017-08-18 17:26
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

initial = True

dependencies = [
]

operations = [
migrations.CreateModel(
name='Wiki',
fields=[
('wiki_id', models.IntegerField(primary_key=True, serialize=False)),
('team_name', models.CharField(max_length=255)),
('attribution', models.TextField(null=True)),
('background', models.TextField(null=True)),
('description', models.TextField(null=True)),
('design', models.TextField(null=True)),
('human_practice', models.TextField(null=True)),
('modeling', models.TextField(null=True)),
('notebook', models.TextField(null=True)),
('protocol', models.TextField(null=True)),
('result', models.TextField(null=True)),
('safety', models.TextField(null=True)),
('keywords', models.TextField(null=True)),
('track', models.TextField(null=True)),
('part_favorite', models.TextField(null=True)),
('part_normal', models.TextField(null=True)),
],
options={
'db_table': 'team_wiki',
'managed': False,
},
),
]
Empty file.
Loading

0 comments on commit 8d739e4

Please sign in to comment.