Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
P
physical
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
alpha
physical
Commits
3665c234
Commit
3665c234
authored
Apr 03, 2019
by
zhanglu
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/virtual_vote_num' into 'dev'
Feature/virtual vote num See merge request
!217
parents
165eded0
66943362
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
556 additions
and
738 deletions
+556
-738
.gitignore
.gitignore
+14
-0
workspace.xml
.idea/workspace.xml
+47
-560
tasks.py
injection/data_sync/tasks.py
+0
-1
es.py
libs/es.py
+21
-8
collect_data.py
linucb/views/collect_data.py
+85
-13
linucb.py
linucb/views/linucb.py
+16
-12
topic.py
search/utils/topic.py
+94
-57
group.py
search/views/group.py
+4
-9
topic.py
search/views/topic.py
+45
-33
trans2es_data2es_parallel.py
trans2es/management/commands/trans2es_data2es_parallel.py
+1
-0
topic-high-star.json
trans2es/mapping/topic-high-star.json
+54
-0
topic-star-routing.json
trans2es/mapping/topic-star-routing.json
+54
-0
topic.json
trans2es/mapping/topic.json
+2
-0
group.py
trans2es/models/group.py
+9
-9
pictorial.py
trans2es/models/pictorial.py
+1
-2
topic.py
trans2es/models/topic.py
+33
-19
user.py
trans2es/models/user.py
+10
-0
user_extra.py
trans2es/models/user_extra.py
+2
-1
type_info.py
trans2es/type_info.py
+39
-6
group_transfer.py
trans2es/utils/group_transfer.py
+1
-1
topic_transfer.py
trans2es/utils/topic_transfer.py
+24
-7
No files found.
.gitignore
View file @
3665c234
...
@@ -58,6 +58,7 @@ docs/_build/
...
@@ -58,6 +58,7 @@ docs/_build/
# config
# config
fabfile.py
fabfile.py
settings.online.py
settings.online.py
/gaia/settings.py
settings_local.py
settings_local.py
media/
media/
log/
log/
...
@@ -69,3 +70,16 @@ Vagrantfile
...
@@ -69,3 +70,16 @@ Vagrantfile
*.DS_Store
*.DS_Store
dump.rdb
dump.rdb
# .gitignore for yangchuncheng
api/management/commands/ycc*
settings_override*
.script/
.tmp.sql
.env
*.pem
/gaia/hospital_list_settings.py
coverage_html/
gaia/rpcd.json
*.swp
dbmw_deploy/config.dir/
.idea/workspace.xml
View file @
3665c234
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<project
version=
"4"
>
<project
version=
"4"
>
<component
name=
"ChangeListManager"
>
<component
name=
"ChangeListManager"
>
<list
default=
"true"
id=
"d7dd36ca-85ef-4a59-9db5-8b1ee4993a4e"
name=
"Default Changelist"
comment=
""
/>
<list
default=
"true"
id=
"d7dd36ca-85ef-4a59-9db5-8b1ee4993a4e"
name=
"Default Changelist"
comment=
""
>
<change
beforePath=
"$PROJECT_DIR$/.idea/workspace.xml"
beforeDir=
"false"
afterPath=
"$PROJECT_DIR$/.idea/workspace.xml"
afterDir=
"false"
/>
</list>
<option
name=
"EXCLUDED_CONVERTED_TO_IGNORED"
value=
"true"
/>
<option
name=
"EXCLUDED_CONVERTED_TO_IGNORED"
value=
"true"
/>
<option
name=
"SHOW_DIALOG"
value=
"false"
/>
<option
name=
"SHOW_DIALOG"
value=
"false"
/>
<option
name=
"HIGHLIGHT_CONFLICTS"
value=
"true"
/>
<option
name=
"HIGHLIGHT_CONFLICTS"
value=
"true"
/>
...
@@ -53,174 +55,34 @@
...
@@ -53,174 +55,34 @@
</counts>
</counts>
</usages-collector>
</usages-collector>
</session>
</session>
<session
id=
"-609148713"
>
<usages-collector
id=
"statistics.lifecycle.project"
>
<counts>
<entry
key=
"project.closed"
value=
"1"
/>
<entry
key=
"project.open.time.2"
value=
"1"
/>
<entry
key=
"project.open.time.8"
value=
"1"
/>
<entry
key=
"project.opened"
value=
"2"
/>
</counts>
</usages-collector>
<usages-collector
id=
"statistics.file.extensions.open"
>
<counts>
<entry
key=
"json"
value=
"8"
/>
<entry
key=
"py"
value=
"69"
/>
<entry
key=
"template"
value=
"3"
/>
<entry
key=
"xml"
value=
"1"
/>
</counts>
</usages-collector>
<usages-collector
id=
"statistics.file.types.open"
>
<counts>
<entry
key=
"JSON"
value=
"8"
/>
<entry
key=
"PLAIN_TEXT"
value=
"3"
/>
<entry
key=
"Python"
value=
"69"
/>
<entry
key=
"XML"
value=
"1"
/>
</counts>
</usages-collector>
<usages-collector
id=
"statistics.file.extensions.edit"
>
<counts>
<entry
key=
"json"
value=
"56"
/>
<entry
key=
"py"
value=
"888"
/>
<entry
key=
"template"
value=
"5"
/>
</counts>
</usages-collector>
<usages-collector
id=
"statistics.file.types.edit"
>
<counts>
<entry
key=
"JSON"
value=
"56"
/>
<entry
key=
"PLAIN_TEXT"
value=
"5"
/>
<entry
key=
"Python"
value=
"888"
/>
</counts>
</usages-collector>
</session>
</component>
</component>
<component
name=
"FileEditorManager"
>
<component
name=
"FileEditorManager"
>
<leaf
SIDE_TABS_SIZE_LIMIT_KEY=
"300"
>
<leaf
SIDE_TABS_SIZE_LIMIT_KEY=
"300"
>
<file
pinned=
"false"
current-in-tab=
"false"
>
<file
pinned=
"false"
current-in-tab=
"false"
>
<entry
file=
"file://$PROJECT_DIR$/search/views/topic.py"
>
<entry
file=
"file://$PROJECT_DIR$/search/views/topic.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<<<<<<
< HEAD
<state
relative-caret-position=
"209"
>
<state
relative-caret-position=
"15"
>
<caret
line=
"85"
column=
"46"
selection-start-line=
"85"
selection-start-column=
"46"
selection-end-line=
"85"
selection-end-column=
"46"
/>
=======
<state
relative-caret-position=
"823"
>
>>>>>>> huabao
<caret
line=
"103"
column=
"37"
selection-start-line=
"103"
selection-start-column=
"32"
selection-end-line=
"103"
selection-end-column=
"37"
/>
<folding>
<folding>
<element
signature=
"e#466#1607#0"
/>
<element
signature=
"e#463#1573#0"
/>
<element
signature=
"e#7074#7716#0"
/>
<element
signature=
"e#6049#6240#0"
/>
<element
signature=
"e#7816#8386#0"
/>
<element
signature=
"e#7051#7614#0"
/>
<element
signature=
"e#8511#9086#0"
/>
<element
signature=
"e#8492#10033#0"
/>
<element
signature=
"e#10162#10820#0"
/>
<element
signature=
"e#10934#11363#0"
/>
</folding>
</folding>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
</file>
</file>
<file
pinned=
"false"
current-in-tab=
"false"
>
<entry
file=
"file://$PROJECT_DIR$/search/views/group.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"510"
>
<caret
line=
"42"
column=
"16"
lean-forward=
"true"
selection-start-line=
"42"
selection-start-column=
"16"
selection-end-line=
"42"
selection-end-column=
"16"
/>
</state>
</provider>
</entry>
</file>
<file
pinned=
"false"
current-in-tab=
"false"
>
<entry
file=
"file://$PROJECT_DIR$/trans2es/type_info.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"265"
>
<caret
line=
"337"
column=
"24"
selection-start-line=
"337"
selection-start-column=
"24"
selection-end-line=
"337"
selection-end-column=
"24"
/>
<folding>
<element
signature=
"e#15#87#0"
expanded=
"true"
/>
</folding>
</state>
</provider>
</entry>
</file>
<file
pinned=
"false"
current-in-tab=
"false"
>
<entry
file=
"file://$PROJECT_DIR$/trans2es/models/pictorial.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<<<<<<
< HEAD
<state
relative-caret-position=
"307"
>
<caret
line=
"264"
column=
"36"
lean-forward=
"true"
selection-start-line=
"264"
selection-start-column=
"36"
selection-end-line=
"264"
selection-end-column=
"36"
/>
=======
<state>
<caret
line=
"31"
column=
"4"
selection-start-line=
"31"
selection-start-column=
"4"
selection-end-line=
"31"
selection-end-column=
"4"
/>
</state>
</provider>
</entry>
</file>
<file
pinned=
"false"
current-in-tab=
"false"
>
<entry
file=
"file://$PROJECT_DIR$/trans2es/utils/pictorial_transfer.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"322"
>
<caret
line=
"28"
column=
"48"
lean-forward=
"true"
selection-start-line=
"28"
selection-start-column=
"48"
selection-end-line=
"28"
selection-end-column=
"48"
/>
>>>>>>> huabao
<folding>
<element
signature=
"e#46#55#0"
expanded=
"true"
/>
</folding>
</state>
</provider>
</entry>
</file>
<file
pinned=
"false"
current-in-tab=
"false"
>
<entry
file=
"file://$PROJECT_DIR$/trans2es/mapping/topic.json"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<<<<<<
< HEAD
<state
relative-caret-position=
"215"
>
<caret
line=
"24"
column=
"16"
selection-start-line=
"24"
selection-start-column=
"5"
selection-end-line=
"24"
selection-end-column=
"16"
/>
=======
<state
relative-caret-position=
"319"
>
<caret
line=
"27"
column=
"36"
lean-forward=
"true"
selection-start-line=
"27"
selection-start-column=
"36"
selection-end-line=
"27"
selection-end-column=
"36"
/>
>>>>>>> huabao
</state>
</provider>
</entry>
</file>
<file
pinned=
"false"
current-in-tab=
"true"
>
<file
pinned=
"false"
current-in-tab=
"true"
>
<entry
file=
"file://$PROJECT_DIR$/trans2es/utils/topic_transfer.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<<<<<<
< HEAD
<state
relative-caret-position=
"1068"
>
<caret
line=
"75"
column=
"19"
lean-forward=
"true"
selection-start-line=
"75"
selection-start-column=
"19"
selection-end-line=
"75"
selection-end-column=
"19"
/>
=======
<state
relative-caret-position=
"1129"
>
<caret
line=
"88"
column=
"48"
lean-forward=
"true"
selection-start-line=
"88"
selection-start-column=
"48"
selection-end-line=
"88"
selection-end-column=
"48"
/>
>>>>>>> huabao
<folding>
<element
signature=
"e#46#55#0"
expanded=
"true"
/>
</folding>
</state>
</provider>
</entry>
</file>
<file
pinned=
"false"
current-in-tab=
"false"
>
<entry
file=
"file://$PROJECT_DIR$/trans2es/models/topic.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"698"
>
<caret
line=
"98"
column=
"80"
selection-start-line=
"98"
selection-start-column=
"12"
selection-end-line=
"98"
selection-end-column=
"80"
/>
<folding>
<element
signature=
"e#46#118#0"
expanded=
"true"
/>
</folding>
</state>
</provider>
</entry>
</file>
<file
pinned=
"false"
current-in-tab=
"false"
>
<entry
file=
"file://$PROJECT_DIR$/trans2es/mapping/pictorial.json"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"240"
>
<caret
line=
"16"
column=
"1"
lean-forward=
"true"
selection-start-line=
"16"
selection-start-column=
"1"
selection-end-line=
"16"
selection-end-column=
"1"
/>
</state>
</provider>
</entry>
</file>
<file
pinned=
"false"
current-in-tab=
"false"
>
<entry
file=
"file://$PROJECT_DIR$/search/utils/topic.py"
>
<entry
file=
"file://$PROJECT_DIR$/search/utils/topic.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"1
29
0"
>
<state
relative-caret-position=
"1
76
0"
>
<caret
line=
"
94"
column=
"8"
selection-start-line=
"94"
selection-start-column=
"8"
selection-end-line=
"94"
selection-end-column=
"8
"
/>
<caret
line=
"
293"
column=
"66"
selection-start-line=
"293"
selection-start-column=
"66"
selection-end-line=
"293"
selection-end-column=
"66
"
/>
<folding>
<folding>
<element
signature=
"e#47#61#0"
expanded=
"true"
/>
<element
signature=
"e#47#61#0"
expanded=
"true"
/>
<element
signature=
"e#363#1043#0"
/>
</folding>
</folding>
</state>
</state>
</provider>
</provider>
...
@@ -228,72 +90,25 @@
...
@@ -228,72 +90,25 @@
</file>
</file>
</leaf>
</leaf>
</component>
</component>
<component
name=
"FileTemplateManagerImpl"
>
<option
name=
"RECENT_TEMPLATES"
>
<list>
<option
value=
"Python Script"
/>
</list>
</option>
</component>
<component
name=
"FindInProjectRecents"
>
<findStrings>
<find>
grop
</find>
<find>
contrast_similar
</find>
<find>
topic
</find>
<find>
GroupTransfer
</find>
<find>
get_group_query_result
</find>
<find>
get_group_ids_by_aggs
</find>
<find>
pictorial_id
</find>
<find>
pictorial_name
</find>
<find>
get_recommend_topic_ids
</find>
<find>
ES_INDEX_PREFIX
</find>
<find>
physical/search/query_tag_id_by_topic
</find>
<find>
tag_name_list
</find>
<find>
pictorial
</find>
<find>
group
</find>
<find>
update_time
</find>
</findStrings>
</component>
<component
name=
"Git.Settings"
>
<component
name=
"Git.Settings"
>
<option
name=
"RECENT_GIT_ROOT_PATH"
value=
"$PROJECT_DIR$"
/>
<option
name=
"RECENT_GIT_ROOT_PATH"
value=
"$PROJECT_DIR$"
/>
</component>
</component>
<component
name=
"IdeDocumentHistory"
>
<component
name=
"IdeDocumentHistory"
>
<option
name=
"CHANGED_PATHS"
>
<option
name=
"CHANGED_PATHS"
>
<list>
<list>
<option
value=
"$PROJECT_DIR$/trans2es/models/face_user_contrast_similar.py"
/>
<option
value=
"$PROJECT_DIR$/physical/settings.py"
/>
<option
value=
"$PROJECT_DIR$/trans2es/utils/pictorial_transfer.py"
/>
<option
value=
"$PROJECT_DIR$/trans2es/mapping/group.json"
/>
<option
value=
"$PROJECT_DIR$/trans2es/mapping/pictorial.py"
/>
<option
value=
"$PROJECT_DIR$/trans2es/mapping/pictorial.json"
/>
<option
value=
"$PROJECT_DIR$/trans2es/type_info.py"
/>
<option
value=
"$PROJECT_DIR$/trans2es/models/group.py"
/>
<option
value=
"$PROJECT_DIR$/trans2es/utils/group_transfer.py"
/>
<option
value=
"$PROJECT_DIR$/trans2es/models/pictorial.py"
/>
<option
value=
"$PROJECT_DIR$/trans2es/mapping/user.json"
/>
<option
value=
"$PROJECT_DIR$/trans2es/utils/user_transfer.py"
/>
<option
value=
"$PROJECT_DIR$/trans2es/models/user.py"
/>
<option
value=
"$PROJECT_DIR$/trans2es/management/commands/trans2es_data2es_parallel.py"
/>
<option
value=
"$PROJECT_DIR$/trans2es/management/commands/trans2es_data2es_parallel.py"
/>
<option
value=
"$PROJECT_DIR$/trans2es/models/face_user_contrast_similar.py"
/>
<option
value=
"$PROJECT_DIR$/search/views/topic.py"
/>
<option
value=
"$PROJECT_DIR$/search/views/topic.py"
/>
<option
value=
"$PROJECT_DIR$/search/views/group.py"
/>
<option
value=
"$PROJECT_DIR$/search/utils/topic.py"
/>
<option
value=
"$PROJECT_DIR$/search/utils/topic.py"
/>
<option
value=
"$PROJECT_DIR$/physical/settings_local.py.template"
/>
<option
value=
"$PROJECT_DIR$/physical/settings.py"
/>
<option
value=
"$PROJECT_DIR$/search/utils/group.py"
/>
<option
value=
"$PROJECT_DIR$/trans2es/models/topic.py"
/>
<option
value=
"$PROJECT_DIR$/trans2es/mapping/topic.json"
/>
<option
value=
"$PROJECT_DIR$/trans2es/utils/topic_transfer.py"
/>
</list>
</list>
</option>
</option>
</component>
</component>
<component
name=
"ProjectFrameBounds"
>
<component
name=
"ProjectFrameBounds"
>
<<<<<<
< HEAD
<option
name=
"x"
value=
"279"
/>
<option
name=
"x"
value=
"-89"
/>
=======
<option
name=
"x"
value=
"-56"
/>
>>>>>>> huabao
<option
name=
"y"
value=
"23"
/>
<option
name=
"y"
value=
"23"
/>
<option
name=
"width"
value=
"1
92
0"
/>
<option
name=
"width"
value=
"1
28
0"
/>
<option
name=
"height"
value=
"7
24
"
/>
<option
name=
"height"
value=
"7
38
"
/>
</component>
</component>
<component
name=
"ProjectInspectionProfilesVisibleTreeState"
>
<component
name=
"ProjectInspectionProfilesVisibleTreeState"
>
<entry
key=
"Project Default"
>
<entry
key=
"Project Default"
>
...
@@ -328,7 +143,7 @@
...
@@ -328,7 +143,7 @@
<path>
<path>
<item
name=
"physical"
type=
"b2602c69:ProjectViewProjectNode"
/>
<item
name=
"physical"
type=
"b2602c69:ProjectViewProjectNode"
/>
<item
name=
"physical"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"physical"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"
injection
"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"
linucb
"
type=
"462c0819:PsiDirectoryNode"
/>
</path>
</path>
<path>
<path>
<item
name=
"physical"
type=
"b2602c69:ProjectViewProjectNode"
/>
<item
name=
"physical"
type=
"b2602c69:ProjectViewProjectNode"
/>
...
@@ -343,13 +158,14 @@
...
@@ -343,13 +158,14 @@
<path>
<path>
<item
name=
"physical"
type=
"b2602c69:ProjectViewProjectNode"
/>
<item
name=
"physical"
type=
"b2602c69:ProjectViewProjectNode"
/>
<item
name=
"physical"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"physical"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"trans2es"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"search"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"utils"
type=
"462c0819:PsiDirectoryNode"
/>
</path>
</path>
<path>
<path>
<item
name=
"physical"
type=
"b2602c69:ProjectViewProjectNode"
/>
<item
name=
"physical"
type=
"b2602c69:ProjectViewProjectNode"
/>
<item
name=
"physical"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"physical"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"
trans2es
"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"
search
"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"
mapping
"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"
views
"
type=
"462c0819:PsiDirectoryNode"
/>
</path>
</path>
</expand>
</expand>
<select
/>
<select
/>
...
@@ -362,9 +178,6 @@
...
@@ -362,9 +178,6 @@
<property
name=
"settings.editor.selected.configurable"
value=
"com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable"
/>
<property
name=
"settings.editor.selected.configurable"
value=
"com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable"
/>
</component>
</component>
<component
name=
"RecentsManager"
>
<component
name=
"RecentsManager"
>
<key
name=
"CopyFile.RECENT_KEYS"
>
<recent
name=
"$PROJECT_DIR$/trans2es/mapping"
/>
</key>
<key
name=
"MoveFile.RECENT_KEYS"
>
<key
name=
"MoveFile.RECENT_KEYS"
>
<recent
name=
"$PROJECT_DIR$/search/views"
/>
<recent
name=
"$PROJECT_DIR$/search/views"
/>
</key>
</key>
...
@@ -395,14 +208,9 @@
...
@@ -395,14 +208,9 @@
<servers
/>
<servers
/>
</component>
</component>
<component
name=
"ToolWindowManager"
>
<component
name=
"ToolWindowManager"
>
<<<<<<
< HEAD
<frame
x=
"0"
y=
"23"
width=
"1280"
height=
"724"
extended-state=
"6"
/>
<frame
x=
"-89"
y=
"23"
width=
"1920"
height=
"724"
extended-state=
"0"
/>
=======
<frame
x=
"-56"
y=
"23"
width=
"1920"
height=
"724"
extended-state=
"0"
/>
>>>>>>> huabao
<editor
active=
"true"
/>
<layout>
<layout>
<window_info
active=
"true"
content_ui=
"combo"
id=
"Project"
order=
"0"
visible=
"true"
weight=
"0.18114798
"
/>
<window_info
content_ui=
"combo"
id=
"Project"
order=
"0"
visible=
"true"
weight=
"0.22160445
"
/>
<window_info
id=
"Structure"
order=
"1"
side_tool=
"true"
weight=
"0.25"
/>
<window_info
id=
"Structure"
order=
"1"
side_tool=
"true"
weight=
"0.25"
/>
<window_info
id=
"DB Browser"
order=
"2"
/>
<window_info
id=
"DB Browser"
order=
"2"
/>
<window_info
id=
"Favorites"
order=
"3"
side_tool=
"true"
/>
<window_info
id=
"Favorites"
order=
"3"
side_tool=
"true"
/>
...
@@ -415,11 +223,7 @@
...
@@ -415,11 +223,7 @@
<window_info
anchor=
"bottom"
id=
"TODO"
order=
"6"
/>
<window_info
anchor=
"bottom"
id=
"TODO"
order=
"6"
/>
<window_info
anchor=
"bottom"
id=
"Version Control"
order=
"7"
show_stripe_button=
"false"
/>
<window_info
anchor=
"bottom"
id=
"Version Control"
order=
"7"
show_stripe_button=
"false"
/>
<window_info
anchor=
"bottom"
id=
"DB Execution Console"
order=
"8"
/>
<window_info
anchor=
"bottom"
id=
"DB Execution Console"
order=
"8"
/>
<<<<<<
< HEAD
<window_info
active=
"true"
anchor=
"bottom"
id=
"Terminal"
order=
"9"
visible=
"true"
weight=
"0.44663382"
/>
<window_info
anchor=
"bottom"
id=
"Terminal"
order=
"9"
visible=
"true"
weight=
"0.56978655"
/>
=======
<window_info
anchor=
"bottom"
id=
"Terminal"
order=
"9"
visible=
"true"
weight=
"0.0"
/>
>>>>>>> huabao
<window_info
anchor=
"bottom"
id=
"Python Console"
order=
"10"
/>
<window_info
anchor=
"bottom"
id=
"Python Console"
order=
"10"
/>
<window_info
anchor=
"bottom"
id=
"Event Log"
order=
"11"
side_tool=
"true"
/>
<window_info
anchor=
"bottom"
id=
"Event Log"
order=
"11"
side_tool=
"true"
/>
<window_info
anchor=
"right"
id=
"Commander"
internal_type=
"SLIDING"
order=
"0"
type=
"SLIDING"
weight=
"0.4"
/>
<window_info
anchor=
"right"
id=
"Commander"
internal_type=
"SLIDING"
order=
"0"
type=
"SLIDING"
weight=
"0.4"
/>
...
@@ -430,62 +234,7 @@
...
@@ -430,62 +234,7 @@
<component
name=
"VcsContentAnnotationSettings"
>
<component
name=
"VcsContentAnnotationSettings"
>
<option
name=
"myLimit"
value=
"2678400000"
/>
<option
name=
"myLimit"
value=
"2678400000"
/>
</component>
</component>
<component
name=
"XDebuggerManager"
>
<breakpoint-manager>
<breakpoints>
<line-breakpoint
enabled=
"true"
suspend=
"THREAD"
type=
"python-line"
>
<url>
file://$PROJECT_DIR$/trans2es/models/user.py
</url>
<line>
148
</line>
<option
name=
"timeStamp"
value=
"1"
/>
</line-breakpoint>
<line-breakpoint
enabled=
"true"
suspend=
"THREAD"
type=
"python-line"
>
<url>
file://$PROJECT_DIR$/trans2es/models/user.py
</url>
<line>
139
</line>
<option
name=
"timeStamp"
value=
"2"
/>
</line-breakpoint>
<line-breakpoint
enabled=
"true"
suspend=
"THREAD"
type=
"python-line"
>
<url>
file://$PROJECT_DIR$/search/views/group.py
</url>
<line>
36
</line>
<option
name=
"timeStamp"
value=
"3"
/>
</line-breakpoint>
<line-breakpoint
enabled=
"true"
suspend=
"THREAD"
type=
"python-line"
>
<url>
file://$PROJECT_DIR$/search/utils/group.py
</url>
<line>
11
</line>
<option
name=
"timeStamp"
value=
"4"
/>
</line-breakpoint>
<line-breakpoint
enabled=
"true"
suspend=
"THREAD"
type=
"python-line"
>
<url>
file://$PROJECT_DIR$/trans2es/models/topic.py
</url>
<line>
86
</line>
<option
name=
"timeStamp"
value=
"5"
/>
</line-breakpoint>
<line-breakpoint
enabled=
"true"
suspend=
"THREAD"
type=
"python-line"
>
<url>
file://$PROJECT_DIR$/trans2es/models/topic.py
</url>
<line>
110
</line>
<option
name=
"timeStamp"
value=
"7"
/>
</line-breakpoint>
<line-breakpoint
enabled=
"true"
suspend=
"THREAD"
type=
"python-line"
>
<url>
file://$PROJECT_DIR$/trans2es/models/topic.py
</url>
<line>
136
</line>
<option
name=
"timeStamp"
value=
"8"
/>
</line-breakpoint>
</breakpoints>
</breakpoint-manager>
</component>
<component
name=
"editorHistoryManager"
>
<component
name=
"editorHistoryManager"
>
<entry
file=
"file://$PROJECT_DIR$/search/views/contrast_similar.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
/>
</entry>
<entry
file=
"file://$PROJECT_DIR$/trans2es/mapping/pictorial.py"
/>
<entry
file=
"file://$PROJECT_DIR$/trans2es/mapping/group.json"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state>
<caret
column=
"1"
lean-forward=
"true"
selection-start-column=
"1"
selection-end-column=
"1"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/trans2es/management/commands/trans2es_mapping2es.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
/>
</entry>
<entry
file=
"file://$PROJECT_DIR$/trans2es/models/face_user_contrast_similar.py"
>
<entry
file=
"file://$PROJECT_DIR$/trans2es/models/face_user_contrast_similar.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"240"
>
<state
relative-caret-position=
"240"
>
...
@@ -493,319 +242,57 @@
...
@@ -493,319 +242,57 @@
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/trans2es/models/contrast_similar.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
/>
</entry>
<entry
file=
"file://$PROJECT_DIR$/trans2es/models/group_user_role.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
/>
</entry>
<entry
file=
"file://$PROJECT_DIR$/trans2es/models/pick_celebrity.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
/>
</entry>
<entry
file=
"file://$PROJECT_DIR$/trans2es/models/pick_topic.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
/>
</entry>
<entry
file=
"file://$PROJECT_DIR$/trans2es/models/pickuserrecord.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
/>
</entry>
<entry
file=
"file://$PROJECT_DIR$/trans2es/models/user_extra.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
/>
</entry>
<entry
file=
"file://$PROJECT_DIR$/trans2es/models/user_follow.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
/>
</entry>
<entry
file=
"file://$PROJECT_DIR$/trans2es/utils/group_transfer.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"150"
>
<caret
line=
"14"
column=
"25"
selection-start-line=
"14"
selection-start-column=
"25"
selection-end-line=
"14"
selection-end-column=
"25"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/trans2es/models/group.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"210"
>
<caret
line=
"14"
column=
"26"
lean-forward=
"true"
selection-start-line=
"14"
selection-start-column=
"26"
selection-end-line=
"14"
selection-end-column=
"26"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/trans2es/utils/user_transfer.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"644"
>
<caret
line=
"76"
selection-start-line=
"76"
selection-end-line=
"76"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/trans2es/mapping/user.json"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"448"
>
<caret
line=
"51"
column=
"32"
selection-start-line=
"51"
selection-start-column=
"5"
selection-end-line=
"51"
selection-end-column=
"32"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/search/views.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
/>
</entry>
<entry
file=
"file://$PROJECT_DIR$/physical/django_init.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
/>
</entry>
<entry
file=
"file://$PROJECT_DIR$/physical/settings.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"180"
>
<caret
line=
"12"
column=
"9"
lean-forward=
"true"
selection-start-line=
"12"
selection-start-column=
"9"
selection-end-line=
"12"
selection-end-column=
"9"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/trans2es/management/commands/trans2es_data2es_parallel.py"
>
<entry
file=
"file://$PROJECT_DIR$/trans2es/management/commands/trans2es_data2es_parallel.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
585
"
>
<state
relative-caret-position=
"
364
"
>
<caret
line=
"
97"
lean-forward=
"true"
selection-start-line=
"97"
selection-end-line=
"97
"
/>
<caret
line=
"
129"
column=
"63"
selection-start-line=
"129"
selection-start-column=
"54"
selection-end-line=
"129"
selection-end-column=
"63
"
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/
trans2es/models/user
.py"
>
<entry
file=
"file://$PROJECT_DIR$/
search/utils/topic
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
285
"
>
<state
relative-caret-position=
"
1760
"
>
<caret
line=
"
19"
column=
"25"
selection-start-line=
"19"
selection-start-column=
"25"
selection-end-line=
"19"
selection-end-column=
"25
"
/>
<caret
line=
"
293"
column=
"66"
selection-start-line=
"293"
selection-start-column=
"66"
selection-end-line=
"293"
selection-end-column=
"66
"
/>
<folding>
<folding>
<element
signature=
"e#47#79#0"
expanded=
"true"
/>
<element
signature=
"e#47#61#0"
expanded=
"true"
/>
<element
signature=
"e#460#7466#0"
/>
<element
signature=
"e#363#1043#0"
/>
<element
signature=
"e#1396#1736#0"
/>
<element
signature=
"e#1787#2318#0"
/>
<element
signature=
"e#2367#3238#0"
/>
<element
signature=
"e#3291#3907#0"
/>
<element
signature=
"e#3960#4576#0"
/>
<element
signature=
"e#3954#5060#0"
/>
<element
signature=
"e#5114#6318#0"
/>
<element
signature=
"e#6364#6780#0"
/>
</folding>
</folding>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/search/views/user.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"-395"
>
<caret
line=
"1"
column=
"12"
selection-start-line=
"1"
selection-start-column=
"12"
selection-end-line=
"1"
selection-end-column=
"12"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/trans2es/models/tag.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
/>
</entry>
<entry
file=
"file://$PROJECT_DIR$/search/views/tag.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"-28"
/>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/search/views/pick.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
/>
</entry>
<entry
file=
"file://$PROJECT_DIR$/app_conf.xml"
>
<entry
file=
"file://$PROJECT_DIR$/app_conf.xml"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
/>
<provider
selected=
"true"
editor-type-id=
"text-editor"
/>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/search/utils/common.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"72"
>
<caret
line=
"6"
column=
"6"
selection-start-line=
"6"
selection-start-column=
"6"
selection-end-line=
"6"
selection-end-column=
"6"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/physical/celery.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
/>
</entry>
<entry
file=
"file://$PROJECT_DIR$/physical/celery_task_router.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"300"
>
<caret
line=
"25"
column=
"23"
lean-forward=
"true"
selection-start-line=
"25"
selection-start-column=
"23"
selection-end-line=
"25"
selection-end-column=
"23"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/physical/urls.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
/>
</entry>
<entry
file=
"file://$PROJECT_DIR$/physical/wsgi.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
/>
</entry>
<entry
file=
"file://$PROJECT_DIR$/physical/settings_local.py.template"
>
<entry
file=
"file://$PROJECT_DIR$/physical/settings_local.py.template"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"1837"
>
<state
relative-caret-position=
"-1987"
/>
<caret
line=
"146"
column=
"26"
selection-start-line=
"146"
selection-start-column=
"26"
selection-end-line=
"146"
selection-end-column=
"26"
/>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/
physical/views
.py"
>
<entry
file=
"file://$PROJECT_DIR$/
search/views/contrast_similar
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
/>
<provider
selected=
"true"
editor-type-id=
"text-editor"
/>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/libs/es.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"120"
>
<caret
line=
"17"
column=
"43"
selection-start-line=
"17"
selection-start-column=
"28"
selection-end-line=
"17"
selection-end-column=
"43"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/search/utils/group.py"
>
<<<<<<
< HEAD
=======
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"147"
>
<caret
line=
"115"
column=
"21"
selection-start-line=
"115"
selection-start-column=
"21"
selection-end-line=
"115"
selection-end-column=
"21"
/>
<folding>
<element
signature=
"e#218#1347#0"
/>
</folding>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/injection/data_sync/tasks.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"180"
>
<caret
line=
"22"
column=
"22"
selection-start-line=
"22"
selection-start-column=
"22"
selection-end-line=
"22"
selection-end-column=
"38"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/search/utils/topic.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"1290"
>
<caret
line=
"94"
column=
"8"
selection-start-line=
"94"
selection-start-column=
"8"
selection-end-line=
"94"
selection-end-column=
"8"
/>
<folding>
<element
signature=
"e#47#61#0"
expanded=
"true"
/>
</folding>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/search/views/group.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"510"
>
<caret
line=
"42"
column=
"16"
lean-forward=
"true"
selection-start-line=
"42"
selection-start-column=
"16"
selection-end-line=
"42"
selection-end-column=
"16"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/trans2es/mapping/topic.json"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"319"
>
<caret
line=
"27"
column=
"36"
lean-forward=
"true"
selection-start-line=
"27"
selection-start-column=
"36"
selection-end-line=
"27"
selection-end-column=
"36"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/search/views/topic.py"
>
<entry
file=
"file://$PROJECT_DIR$/search/views/topic.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
823
"
>
<state
relative-caret-position=
"
209
"
>
<caret
line=
"
103"
column=
"37"
selection-start-line=
"103"
selection-start-column=
"32"
selection-end-line=
"103"
selection-end-column=
"37
"
/>
<caret
line=
"
85"
column=
"46"
selection-start-line=
"85"
selection-start-column=
"46"
selection-end-line=
"85"
selection-end-column=
"46
"
/>
<folding>
<folding>
<element
signature=
"e#466#1607#0"
/>
<element
signature=
"e#463#1573#0"
/>
<element
signature=
"e#7074#7716#0"
/>
<element
signature=
"e#6049#6240#0"
/>
<element
signature=
"e#7816#8386#0"
/>
<element
signature=
"e#7051#7614#0"
/>
<element
signature=
"e#8511#9086#0"
/>
<element
signature=
"e#8492#10033#0"
/>
<element
signature=
"e#10162#10820#0"
/>
<element
signature=
"e#10934#11363#0"
/>
</folding>
</folding>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/trans2es/mapping/pictorial.json"
>
<entry
file=
"file://$PROJECT_DIR$/physical/settings.py"
>
>>>>>>> huabao
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"240"
>
<caret
line=
"16"
column=
"1"
lean-forward=
"true"
selection-start-line=
"16"
selection-start-column=
"1"
selection-end-line=
"16"
selection-end-column=
"1"
/>
</state>
</provider>
</entry>
<<<<<<
< HEAD
=======
<entry
file=
"file://$PROJECT_DIR$/trans2es/type_info.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"265"
>
<caret
line=
"337"
column=
"24"
selection-start-line=
"337"
selection-start-column=
"24"
selection-end-line=
"337"
selection-end-column=
"24"
/>
<folding>
<element
signature=
"e#15#87#0"
expanded=
"true"
/>
</folding>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/trans2es/utils/pictorial_transfer.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"322"
>
<caret
line=
"28"
column=
"48"
lean-forward=
"true"
selection-start-line=
"28"
selection-start-column=
"48"
selection-end-line=
"28"
selection-end-column=
"48"
/>
<folding>
<element
signature=
"e#46#55#0"
expanded=
"true"
/>
</folding>
</state>
</provider>
</entry>
>>>>>>> huabao
<entry
file=
"file://$PROJECT_DIR$/trans2es/models/topic.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"698"
>
<caret
line=
"98"
column=
"80"
selection-start-line=
"98"
selection-start-column=
"12"
selection-end-line=
"98"
selection-end-column=
"80"
/>
<folding>
<element
signature=
"e#46#118#0"
expanded=
"true"
/>
</folding>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/trans2es/models/pictorial.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state>
<caret
line=
"31"
column=
"4"
selection-start-line=
"31"
selection-start-column=
"4"
selection-end-line=
"31"
selection-end-column=
"4"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/trans2es/utils/topic_transfer.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"1129"
>
<caret
line=
"88"
column=
"48"
lean-forward=
"true"
selection-start-line=
"88"
selection-start-column=
"48"
selection-end-line=
"88"
selection-end-column=
"48"
/>
<folding>
<element
signature=
"e#46#55#0"
expanded=
"true"
/>
</folding>
</state>
</provider>
</entry>
<<<<<<
< HEAD
<entry
file=
"file://$PROJECT_DIR$/trans2es/mapping/topic.json"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"215"
>
<caret
line=
"24"
column=
"16"
selection-start-line=
"24"
selection-start-column=
"5"
selection-end-line=
"24"
selection-end-column=
"16"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/search/views/group.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"510"
>
<caret
line=
"42"
column=
"16"
lean-forward=
"true"
selection-start-line=
"42"
selection-start-column=
"16"
selection-end-line=
"42"
selection-end-column=
"16"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/search/views/topic.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"15"
>
<caret
line=
"103"
column=
"37"
selection-start-line=
"103"
selection-start-column=
"32"
selection-end-line=
"103"
selection-end-column=
"37"
/>
<folding>
<element
signature=
"e#466#1607#0"
/>
<element
signature=
"e#7074#7716#0"
/>
<element
signature=
"e#7816#8386#0"
/>
<element
signature=
"e#8511#9086#0"
/>
</folding>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/trans2es/type_info.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"307"
>
<caret
line=
"264"
column=
"36"
lean-forward=
"true"
selection-start-line=
"264"
selection-start-column=
"36"
selection-end-line=
"264"
selection-end-column=
"36"
/>
<folding>
<element
signature=
"e#15#87#0"
expanded=
"true"
/>
</folding>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/trans2es/utils/topic_transfer.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"1068"
>
<state
relative-caret-position=
"-2448"
>
<caret
line=
"75"
column=
"19"
lean-forward=
"true"
selection-start-line=
"75"
selection-start-column=
"19"
selection-end-line=
"75"
selection-end-column=
"19"
/>
<caret
line=
"12"
column=
"9"
lean-forward=
"true"
selection-start-line=
"12"
selection-start-column=
"9"
selection-end-line=
"12"
selection-end-column=
"9"
/>
<folding>
<element
signature=
"e#46#55#0"
expanded=
"true"
/>
</folding>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
=======
>>>>>>> huabao
</component>
</component>
<component
name=
"masterDetails"
>
<component
name=
"masterDetails"
>
<states>
<states>
...
...
injection/data_sync/tasks.py
View file @
3665c234
...
@@ -21,7 +21,6 @@ def write_to_es(es_type, pk_list, use_batch_query_set=False):
...
@@ -21,7 +21,6 @@ def write_to_es(es_type, pk_list, use_batch_query_set=False):
type_info
=
type_info_map
[
es_type
]
type_info
=
type_info_map
[
es_type
]
logging
.
info
(
"duan add,es_type:
%
s"
%
str
(
es_type
))
logging
.
info
(
"duan add,es_type:
%
s"
%
str
(
es_type
))
logging
.
info
(
"get es_type:
%
s"
%
es_type
)
type_info
.
insert_table_by_pk_list
(
type_info
.
insert_table_by_pk_list
(
sub_index_name
=
es_type
,
sub_index_name
=
es_type
,
pk_list
=
pk_list
,
pk_list
=
pk_list
,
...
...
libs/es.py
View file @
3665c234
...
@@ -111,10 +111,6 @@ class ESPerform(object):
...
@@ -111,10 +111,6 @@ class ESPerform(object):
return
False
return
False
mapping_dict
=
cls
.
__load_mapping
(
sub_index_name
)
mapping_dict
=
cls
.
__load_mapping
(
sub_index_name
)
logging
.
info
(
"get write_alias_name:
%
s"
%
write_alias_name
)
logging
.
info
(
"get mapping_dict:
%
s"
%
mapping_dict
)
logging
.
info
(
"get mapping_type:
%
s"
%
mapping_type
)
es_cli
.
indices
.
put_mapping
(
index
=
write_alias_name
,
body
=
mapping_dict
,
doc_type
=
mapping_type
)
es_cli
.
indices
.
put_mapping
(
index
=
write_alias_name
,
body
=
mapping_dict
,
doc_type
=
mapping_type
)
return
True
return
True
...
@@ -158,6 +154,18 @@ class ESPerform(object):
...
@@ -158,6 +154,18 @@ class ESPerform(object):
cls
.
put_index_mapping
(
es_cli
,
sub_index_name
)
cls
.
put_index_mapping
(
es_cli
,
sub_index_name
)
bulk_actions
=
[]
bulk_actions
=
[]
if
sub_index_name
==
"topic"
:
for
data
in
data_list
:
bulk_actions
.
append
({
'_op_type'
:
'index'
,
'_index'
:
official_index_name
,
'_type'
:
doc_type
,
'_id'
:
data
[
'id'
],
'_source'
:
data
,
'routing'
:
data
[
"content_level"
]
})
else
:
for
data
in
data_list
:
for
data
in
data_list
:
bulk_actions
.
append
({
bulk_actions
.
append
({
'_op_type'
:
'index'
,
'_op_type'
:
'index'
,
...
@@ -226,17 +234,22 @@ class ESPerform(object):
...
@@ -226,17 +234,22 @@ class ESPerform(object):
for
item
in
es_nodes_info_list
:
for
item
in
es_nodes_info_list
:
try
:
try
:
item_list
=
item
.
split
(
" "
)
item_list
=
item
.
split
(
" "
)
if
len
(
item_list
)
>
4
:
if
len
(
item_list
)
==
11
:
cpu_load
=
item_list
[
4
]
elif
len
(
item_list
)
==
10
:
cpu_load
=
item_list
[
3
]
cpu_load
=
item_list
[
3
]
if
int
(
cpu_load
)
>
60
:
else
:
continue
int_cpu_load
=
int
(
cpu_load
)
if
int_cpu_load
>
60
:
high_num
+=
1
high_num
+=
1
es_nodes_list
.
append
(
int
(
cpu_load
)
)
es_nodes_list
.
append
(
int_cpu_load
)
except
:
except
:
logging
.
error
(
"catch exception,item:
%
s,err_msg:
%
s"
%
(
str
(
item
),
traceback
.
format_exc
()))
logging
.
error
(
"catch exception,item:
%
s,err_msg:
%
s"
%
(
str
(
item
),
traceback
.
format_exc
()))
return
True
return
True
if
high_num
>
3
:
if
high_num
>
3
:
logging
.
info
(
"check es_nodes_load high,cpu load:
%
s
"
%
str
(
es_nodes_info_list
))
logging
.
info
(
"check es_nodes_load high,cpu load:
%
s
,ori_cpu_info:
%
s"
%
(
str
(
es_nodes_list
),
str
(
es_nodes_info_list
)
))
return
True
return
True
else
:
else
:
return
False
return
False
...
...
linucb/views/collect_data.py
View file @
3665c234
...
@@ -9,6 +9,9 @@ import json
...
@@ -9,6 +9,9 @@ import json
from
trans2es.models.tag
import
TopicTag
from
trans2es.models.tag
import
TopicTag
import
traceback
import
traceback
from
django.conf
import
settings
from
django.conf
import
settings
from
libs.es
import
ESPerform
from
search.utils.common
import
*
class
KafkaManager
(
object
):
class
KafkaManager
(
object
):
consumser_obj
=
None
consumser_obj
=
None
...
@@ -28,6 +31,8 @@ class CollectData(object):
...
@@ -28,6 +31,8 @@ class CollectData(object):
def
__init__
(
self
):
def
__init__
(
self
):
self
.
linucb_matrix_redis_prefix
=
"physical:linucb:device_id:"
self
.
linucb_matrix_redis_prefix
=
"physical:linucb:device_id:"
self
.
linucb_recommend_redis_prefix
=
"physical:linucb:tag_recommend:device_id:"
self
.
linucb_recommend_redis_prefix
=
"physical:linucb:tag_recommend:device_id:"
self
.
linucb_recommend_topic_id_prefix
=
"physical:linucb:topic_recommend:device_id:"
self
.
tag_topic_id_redis_prefix
=
"physical:tag_id:topic_id_list:"
# 默认
# 默认
self
.
user_feature
=
[
0
,
1
]
self
.
user_feature
=
[
0
,
1
]
...
@@ -44,24 +49,88 @@ class CollectData(object):
...
@@ -44,24 +49,88 @@ class CollectData(object):
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
return
dict
()
return
dict
()
def
get_tag_topic_list
(
self
,
tag_id
):
try
:
q
=
{
"query"
:{
"bool"
:{
"must"
:[
{
"term"
:{
"is_online"
:
True
}},
{
"term"
:{
"is_deleted"
:
False
}},
{
"term"
:{
"tag_list"
:
tag_id
}}
]
}
},
"_source"
:{
"include"
:[
"id"
]
},
"sort"
:[
{
"create_time_val"
:{
"order"
:
"desc"
}},
{
"language_type"
:{
"order"
:
"asc"
}},
]
}
result_dict
=
ESPerform
.
get_search_results
(
ESPerform
.
get_cli
(),
sub_index_name
=
"topic-high-star"
,
query_body
=
q
,
offset
=
0
,
size
=
5000
)
topic_id_list
=
[
item
[
"_source"
][
"id"
]
for
item
in
result_dict
[
"hits"
]]
return
topic_id_list
except
:
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
return
list
()
def
update_recommend_tag_list
(
self
,
device_id
,
user_feature
=
None
):
def
update_recommend_tag_list
(
self
,
device_id
,
user_feature
=
None
):
try
:
try
:
recommend_tag_set
=
set
()
recommend_tag_list
=
list
()
recommend_tag_list
=
list
()
recommend_tag_dict
=
dict
()
redis_linucb_tag_data_dict
=
self
.
_get_user_linucb_info
(
device_id
)
redis_linucb_tag_data_dict
=
self
.
_get_user_linucb_info
(
device_id
)
if
len
(
redis_linucb_tag_data_dict
)
==
0
:
if
len
(
redis_linucb_tag_data_dict
)
==
0
:
recommend_tag_list
=
LinUCB
.
get_default_tag_list
()
recommend_tag_list
=
LinUCB
.
get_default_tag_list
()
LinUCB
.
init_device_id_linucb_info
(
redis_client
,
self
.
linucb_matrix_redis_prefix
,
device_id
,
recommend_tag_list
)
LinUCB
.
init_device_id_linucb_info
(
redis_client
,
self
.
linucb_matrix_redis_prefix
,
device_id
,
recommend_tag_list
)
else
:
else
:
user_feature
=
user_feature
if
user_feature
else
self
.
user_feature
user_feature
=
user_feature
if
user_feature
else
self
.
user_feature
recommend_tag_list
=
LinUCB
.
linucb_recommend_tag
(
device_id
,
redis_linucb_tag_data_dict
,
user_feature
,
list
(
redis_linucb_tag_data_dict
.
keys
()))
(
recommend_tag_dict
,
recommend_tag_set
)
=
LinUCB
.
linucb_recommend_tag
(
device_id
,
redis_linucb_tag_data_dict
,
user_feature
,
list
(
redis_linucb_tag_data_dict
.
keys
()))
logging
.
info
(
"duan add,device_id:
%
s,recommend_tag_list:
%
s"
%
(
str
(
device_id
),
str
(
recommend_tag_list
)))
if
len
(
recommend_tag_dict
)
>
0
:
if
len
(
recommend_tag_list
)
>
0
:
recommend_tag_list
=
list
(
recommend_tag_set
)
tag_recommend_redis_key
=
self
.
linucb_recommend_redis_prefix
+
str
(
device_id
)
tag_recommend_redis_key
=
self
.
linucb_recommend_redis_prefix
+
str
(
device_id
)
redis_client
.
set
(
tag_recommend_redis_key
,
json
.
dumps
(
recommend_tag_list
))
redis_client
.
set
(
tag_recommend_redis_key
,
json
.
dumps
(
recommend_tag_list
))
# Todo:设置过期时间,调研set是否支持
# Todo:设置过期时间,调研set是否支持
redis_client
.
expire
(
tag_recommend_redis_key
,
7
*
24
*
60
*
60
)
redis_client
.
expire
(
tag_recommend_redis_key
,
7
*
24
*
60
*
60
)
redis_key
=
"physical:home_recommend"
+
":device_id:"
+
device_id
+
":query_type:"
+
str
(
TopicPageType
.
HOME_RECOMMEND
)
have_read_topic_id_list
=
list
()
redis_field_list
=
[
b
'have_read_topic_list'
]
redis_field_val_list
=
redis_client
.
hmget
(
redis_key
,
redis_field_list
)
if
redis_field_val_list
[
0
]:
have_read_topic_id_list
=
list
(
json
.
loads
(
redis_field_val_list
[
0
]))
recommend_topic_id_list
=
list
()
for
index
in
range
(
0
,
1000
):
for
tag_id
in
recommend_tag_list
[
0
:
5
]:
redis_tag_id_key
=
self
.
tag_topic_id_redis_prefix
+
str
(
tag_id
)
redis_tag_id_data
=
redis_client
.
get
(
redis_tag_id_key
)
tag_topic_id_list
=
json
.
loads
(
redis_tag_id_data
)
if
redis_tag_id_data
else
[]
if
not
redis_tag_id_data
:
tag_topic_id_list
=
self
.
get_tag_topic_list
(
tag_id
)
redis_client
.
set
(
redis_tag_id_key
,
json
.
dumps
(
tag_topic_id_list
))
redis_client
.
expire
(
redis_tag_id_key
,
1
*
24
*
60
*
60
)
if
len
(
tag_topic_id_list
)
>
index
:
for
topic_id
in
tag_topic_id_list
[
index
:]:
if
topic_id
not
in
have_read_topic_id_list
and
topic_id
not
in
recommend_topic_id_list
:
recommend_topic_id_list
.
append
(
topic_id
)
break
topic_recommend_redis_key
=
self
.
linucb_recommend_topic_id_prefix
+
str
(
device_id
)
redis_data_dict
=
{
"data"
:
json
.
dumps
(
recommend_topic_id_list
),
"cursor"
:
0
}
redis_client
.
hmset
(
topic_recommend_redis_key
,
redis_data_dict
)
return
True
return
True
except
:
except
:
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
...
@@ -98,9 +167,10 @@ class CollectData(object):
...
@@ -98,9 +167,10 @@ class CollectData(object):
logging
.
info
(
"consume topic_id:
%
s,device_id:
%
s"
%
(
str
(
topic_id
),
str
(
device_id
)))
logging
.
info
(
"consume topic_id:
%
s,device_id:
%
s"
%
(
str
(
topic_id
),
str
(
device_id
)))
tag_list
=
list
()
tag_list
=
list
()
sql_query_results
=
TopicTag
.
objects
.
filter
(
is_online
=
True
,
topic_id
=
topic_id
)
click_sql_query_results
=
TopicTag
.
objects
.
using
(
settings
.
SLAVE_DB_NAME
)
.
filter
(
topic_id
=
topic_id
)
.
values_list
(
"tag_id"
,
"is_online"
)
for
sql_item
in
sql_query_results
:
for
tag_id
,
is_online
in
click_sql_query_results
:
tag_list
.
append
(
sql_item
.
tag_id
)
if
is_online
:
tag_list
.
append
(
tag_id
)
is_click
=
1
is_click
=
1
is_vote
=
0
is_vote
=
0
...
@@ -130,17 +200,19 @@ class CollectData(object):
...
@@ -130,17 +200,19 @@ class CollectData(object):
exposure_topic_id
=
item
[
"card_id"
]
exposure_topic_id
=
item
[
"card_id"
]
logging
.
info
(
logging
.
info
(
"consume exposure topic_id:
%
s,device_id:
%
s"
%
(
str
(
exposure_topic_id
),
str
(
device_id
)))
"consume exposure topic_id:
%
s,device_id:
%
s"
%
(
str
(
exposure_topic_id
),
str
(
device_id
)))
if
exposure_topic_id
:
exposure_topic_id_list
.
append
(
exposure_topic_id
)
exposure_topic_id_list
.
append
(
exposure_topic_id
)
topic_tag_id_dict
=
dict
()
topic_tag_id_dict
=
dict
()
tag_list
=
list
()
tag_list
=
list
()
sql_query_results
=
TopicTag
.
objects
.
filter
(
is_online
=
True
,
topic_id__in
=
exposure_topic_id_list
)
exposure_sql_query_results
=
TopicTag
.
objects
.
using
(
settings
.
SLAVE_DB_NAME
)
.
filter
(
topic_id__in
=
exposure_topic_id_list
)
.
values_list
(
"topic_id"
,
"tag_id"
,
"is_online"
)
for
sql_item
in
sql_query_results
:
for
topic_id
,
tag_id
,
is_online
in
exposure_sql_query_results
:
tag_list
.
append
(
sql_item
.
tag_id
)
if
is_online
:
tag_list
.
append
(
tag_id
)
if
sql_item
.
topic_id
not
in
topic_tag_id_dict
:
topic_tag_id_dict
[
sql_item
.
topic_id
]
=
list
()
if
topic_id
not
in
topic_tag_id_dict
:
topic_tag_id_dict
[
sql_item
.
topic_id
]
.
append
(
sql_item
.
tag_id
)
topic_tag_id_dict
[
topic_id
]
=
list
()
topic_tag_id_dict
[
topic_id
]
.
append
(
tag_id
)
is_click
=
0
is_click
=
0
is_vote
=
0
is_vote
=
0
...
...
linucb/views/linucb.py
View file @
3665c234
...
@@ -9,12 +9,14 @@ import logging
...
@@ -9,12 +9,14 @@ import logging
import
traceback
import
traceback
import
json
import
json
import
pickle
import
pickle
from
django.conf
import
settings
class
LinUCB
:
class
LinUCB
:
d
=
2
d
=
2
alpha
=
0.
25
alpha
=
0.
01
r1
=
1
r1
=
1
0
r0
=
-
0.
5
r0
=
-
0.
1
default_tag_list
=
list
()
default_tag_list
=
list
()
@classmethod
@classmethod
...
@@ -22,12 +24,9 @@ class LinUCB:
...
@@ -22,12 +24,9 @@ class LinUCB:
try
:
try
:
if
len
(
cls
.
default_tag_list
)
==
0
:
if
len
(
cls
.
default_tag_list
)
==
0
:
query_item_results
=
Tag
.
objects
.
filter
(
is_online
=
True
)
cls
.
default_tag_list
=
Tag
.
objects
.
using
(
settings
.
SLAVE_DB_NAME
)
.
filter
(
is_online
=
True
,
collection
=
1
)
.
values_list
(
"id"
,
flat
=
True
)[
0
:
100
]
for
item
in
query_item_results
:
cls
.
default_tag_list
.
append
(
item
.
id
)
return
cls
.
default_tag_list
[:
20
]
return
cls
.
default_tag_list
except
:
except
:
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
return
list
()
return
list
()
...
@@ -72,6 +71,7 @@ class LinUCB:
...
@@ -72,6 +71,7 @@ class LinUCB:
top_tag_set
=
set
()
top_tag_set
=
set
()
top_tag_dict
=
dict
()
np_score_list
=
list
()
np_score_list
=
list
()
np_score_dict
=
dict
()
np_score_dict
=
dict
()
...
@@ -86,16 +86,20 @@ class LinUCB:
...
@@ -86,16 +86,20 @@ class LinUCB:
sorted_np_score_list
=
sorted
(
np_score_list
,
reverse
=
True
)
sorted_np_score_list
=
sorted
(
np_score_list
,
reverse
=
True
)
for
top_score
in
sorted_np_score_list
:
for
top_score
in
sorted_np_score_list
:
for
top_score_index
in
np_score_dict
[
top_score
]:
for
top_score_index
in
np_score_dict
[
top_score
]:
top_tag_set
.
add
(
str
(
tag_list
[
top_score_index
],
encoding
=
"utf-8"
))
tag_id
=
str
(
tag_list
[
top_score_index
],
encoding
=
"utf-8"
)
top_tag_dict
[
tag_id
]
=
top_score
top_tag_set
.
add
(
tag_id
)
if
len
(
top_tag_dict
)
>=
20
:
break
if
len
(
top_tag_
set
)
>=
1
0
:
if
len
(
top_tag_
dict
)
>=
2
0
:
break
break
logging
.
info
(
"duan add,device_id:
%
s,sorted_np_score_list:
%
s,np_score_dict:
%
s"
%
(
str
(
device_id
),
str
(
sorted_np_score_list
),
str
(
np_score_dict
)))
logging
.
info
(
"duan add,device_id:
%
s,sorted_np_score_list:
%
s,np_score_dict:
%
s"
%
(
str
(
device_id
),
str
(
sorted_np_score_list
),
str
(
np_score_dict
)))
return
list
(
top_tag_set
)
return
(
top_tag_dict
,
top_tag_set
)
except
:
except
:
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
return
[]
return
({},())
@classmethod
@classmethod
def
init_device_id_linucb_info
(
cls
,
redis_cli
,
redis_prefix
,
device_id
,
tag_list
):
def
init_device_id_linucb_info
(
cls
,
redis_cli
,
redis_prefix
,
device_id
,
tag_list
):
...
...
search/utils/topic.py
View file @
3665c234
...
@@ -120,10 +120,9 @@ class TopicUtils(object):
...
@@ -120,10 +120,9 @@ class TopicUtils(object):
return
{}
return
{}
@classmethod
@classmethod
def
get_recommend_topic_ids
(
cls
,
user_id
,
tag_id
,
offset
,
size
,
single_size
,
query
=
None
,
def
get_recommend_topic_ids
(
cls
,
user_id
,
tag_id
,
offset
,
size
,
single_size
,
query
=
None
,
query_type
=
TopicPageType
.
FIND_PAGE
,
query_type
=
TopicPageType
.
FIND_PAGE
,
filter_topic_id_list
=
[],
test_score
=
False
,
must_topic_id_list
=
[],
recommend_tag_list
=
[],
filter_topic_id_list
=
[],
test_score
=
False
,
must_topic_id_list
=
[],
recommend_tag_list
=
[],
user_similar_score_list
=
[],
index_type
=
"topic"
):
user_similar_score_list
=
[]):
"""
"""
:需增加打散逻辑
:需增加打散逻辑
:remark:获取首页推荐帖子列表
:remark:获取首页推荐帖子列表
...
@@ -135,9 +134,8 @@ class TopicUtils(object):
...
@@ -135,9 +134,8 @@ class TopicUtils(object):
"""
"""
try
:
try
:
attention_user_id_list
=
list
()
attention_user_id_list
=
list
()
pick_user_id_list
=
list
()
#
pick_user_id_list = list()
# same_group_id_list = list()
# same_group_id_list = list()
same_pictorial_id_list
=
list
()
user_tag_list
=
list
()
user_tag_list
=
list
()
result_dict
=
TopicUtils
.
get_related_user_info
(
user_id
,
0
,
1
)
result_dict
=
TopicUtils
.
get_related_user_info
(
user_id
,
0
,
1
)
...
@@ -147,16 +145,13 @@ class TopicUtils(object):
...
@@ -147,16 +145,13 @@ class TopicUtils(object):
attention_user_info_list
=
result_dict
[
"hits"
][
0
][
"_source"
][
"attention_user_id_list"
]
attention_user_info_list
=
result_dict
[
"hits"
][
0
][
"_source"
][
"attention_user_id_list"
]
attention_user_id_list
=
[
item
[
"user_id"
]
for
item
in
attention_user_info_list
]
attention_user_id_list
=
[
item
[
"user_id"
]
for
item
in
attention_user_info_list
]
pick_user_info_list
=
result_dict
[
"hits"
][
0
][
"_source"
][
"pick_user_id_list"
]
#
pick_user_info_list = result_dict["hits"][0]["_source"]["pick_user_id_list"]
pick_user_id_list
=
[
item
[
"user_id"
]
for
item
in
pick_user_info_list
]
#
pick_user_id_list = [item["user_id"] for item in pick_user_info_list]
# same_group_user_info_list = result_dict["hits"][0]["_source"]["same_group_user_id_list"]
# same_pictorial_user_info_list = result_dict["hits"][0]["_source"]["same_pictorial_user_id_list"]
# same_group_id_list = [item["user_id"] for item in same_group_user_info_list]
#
# same_group_id_list = same_group_id_list[:100]
# same_pictorial_id_list = [item["user_id"] for item in same_pictorial_user_info_list]
same_pictorial_user_info_list
=
result_dict
[
"hits"
][
0
][
"_source"
][
"same_pictorial_user_id_list"
]
# same_pictorial_id_list = same_pictorial_id_list[:100]
same_pictorial_id_list
=
[
item
[
"user_id"
]
for
item
in
same_pictorial_user_info_list
]
same_pictorial_id_list
=
same_pictorial_id_list
[:
100
]
user_tag_list
=
result_dict
[
"hits"
][
0
][
"_source"
][
"tag_list"
]
user_tag_list
=
result_dict
[
"hits"
][
0
][
"_source"
][
"tag_list"
]
...
@@ -170,22 +165,22 @@ class TopicUtils(object):
...
@@ -170,22 +165,22 @@ class TopicUtils(object):
"language_type"
:
1
"language_type"
:
1
}
}
},
},
"weight"
:
3
"weight"
:
6
},
},
{
{
"
linear
"
:
{
"
gauss
"
:
{
"create_time"
:
{
"create_time"
:
{
"scale"
:
"1d"
,
"scale"
:
"1d"
,
"decay"
:
0.99
"decay"
:
0.99
}
}
},
},
"weight"
:
5
00
"weight"
:
5
}
}
]
]
if
len
(
user_similar_score_list
)
>
0
:
if
len
(
user_similar_score_list
)
>
0
:
for
item
in
user_similar_score_list
[:
100
]:
for
item
in
user_similar_score_list
[:
100
]:
score_item
=
3
*
10
*
item
[
1
]
score_item
=
2
+
item
[
1
]
functions_list
.
append
(
functions_list
.
append
(
{
{
"filter"
:
{
"bool"
:
{
"filter"
:
{
"bool"
:
{
...
@@ -202,30 +197,23 @@ class TopicUtils(object):
...
@@ -202,30 +197,23 @@ class TopicUtils(object):
"weight"
:
3
,
"weight"
:
3
,
}
}
)
)
if
len
(
pick_user_id_list
)
>
0
:
# if len(pick_user_id_list) > 0:
functions_list
.
append
(
{
"filter"
:
{
"bool"
:
{
"should"
:
{
"terms"
:
{
"user_id"
:
pick_user_id_list
}}}},
"weight"
:
2
}
)
# if len(same_group_id_list)>0:
# functions_list.append(
# functions_list.append(
# {
# {
# "filter": {"bool": {
# "filter": {"bool": {
# "should": {"terms":{"user_id":same_group_id_list}}}},
# "should": {"terms": {"user_id": pick_user_id_list}}}},
# "weight": 2
# }
# )
# if len(same_pictorial_id_list) > 0:
# functions_list.append(
# {
# "filter": {"bool": {
# "should": {"terms": {"user_id": same_pictorial_id_list}}}},
# "weight": 1
# "weight": 1
# }
# }
# )
# )
if
len
(
same_pictorial_id_list
)
>
0
:
functions_list
.
append
(
{
"filter"
:
{
"bool"
:
{
"should"
:
{
"terms"
:
{
"user_id"
:
same_pictorial_id_list
}}}},
"weight"
:
1
}
)
# query_tag_term_list = cls.___get_should_term_list(user_tag_list)
# query_tag_term_list = cls.___get_should_term_list(user_tag_list)
if
len
(
user_tag_list
)
>
0
:
if
len
(
user_tag_list
)
>
0
:
...
@@ -236,22 +224,41 @@ class TopicUtils(object):
...
@@ -236,22 +224,41 @@ class TopicUtils(object):
"weight"
:
1
"weight"
:
1
}
}
)
)
if
len
(
recommend_tag_list
)
>
0
:
# if len(recommend_tag_list)>0:
functions_list
.
append
(
# if len(recommend_tag_list)>1:
{
# functions_list += [
"filter"
:
{
"bool"
:
{
# {
"should"
:
{
"terms"
:
{
"edit_tag_list"
:
recommend_tag_list
}}}},
# "filter": {"term": {"tag_list": recommend_tag_list[0]}},
"weight"
:
3
# "weight": 4
}
# },
)
# {
# "filter": {"terms": {"tag_list": recommend_tag_list[1:]}},
# "weight": 3
# }
# ]
# else:
# functions_list.append(
# {
# "filter": {"terms": {"tag_list": recommend_tag_list}},
# "weight": 3
# }
# )
# for tag_id in recommend_tag_dict:
# functions_list.append(
# {
# "filter": {"term": {"tag_list": tag_id}},
# "weight": recommend_tag_dict[tag_id]
# }
# )
low_content_level
=
4
if
query_type
==
TopicPageType
.
FIND_PAGE
else
3
#
low_content_level = 4 if query_type == TopicPageType.FIND_PAGE else 3
query_function_score
=
{
query_function_score
=
{
"query"
:
{
"query"
:
{
"bool"
:
{
"bool"
:
{
"filter"
:
[
"filter"
:
[
{
"range"
:
{
"content_level"
:
{
"gte"
:
low_content_level
,
"lte"
:
5
}}},
#
{"range": {"content_level": {"gte": low_content_level, "lte": 5}}},
{
"term"
:
{
"has_image"
:
True
}},
# {"term": {"has_image":
True}},
{
"term"
:
{
"is_online"
:
True
}},
{
"term"
:
{
"is_online"
:
True
}},
{
"term"
:
{
"is_deleted"
:
False
}}
{
"term"
:
{
"is_deleted"
:
False
}}
],
],
...
@@ -332,13 +339,18 @@ class TopicUtils(object):
...
@@ -332,13 +339,18 @@ class TopicUtils(object):
"order"
:
"desc"
"order"
:
"desc"
}
}
},
},
# {
# "offline_score":{
# "order": "desc"
# }
# },
"_score"
"_score"
]
]
result_dict
=
ESPerform
.
get_search_results
(
ESPerform
.
get_cli
(),
sub_index_name
=
"topic"
,
query_body
=
q
,
result_dict
=
ESPerform
.
get_search_results
(
ESPerform
.
get_cli
(),
sub_index_name
=
index_type
,
query_body
=
q
,
offset
=
offset
,
size
=
size
)
offset
=
offset
,
size
=
size
)
topic_id_list
=
list
()
topic_id_list
=
list
()
same_
pictorial
_id_set
=
set
()
same_
group
_id_set
=
set
()
same_user_id_set
=
set
()
same_user_id_set
=
set
()
for
item
in
result_dict
[
"hits"
]:
for
item
in
result_dict
[
"hits"
]:
...
@@ -376,7 +388,7 @@ class TopicUtils(object):
...
@@ -376,7 +388,7 @@ class TopicUtils(object):
@classmethod
@classmethod
def
get_topic_detail_recommend_list
(
cls
,
user_id
,
topic_id
,
topic_tag_list
,
topic_pictorial_id
,
topic_user_id
,
def
get_topic_detail_recommend_list
(
cls
,
user_id
,
topic_id
,
topic_tag_list
,
topic_pictorial_id
,
topic_user_id
,
filter_topic_user_id
,
have_read_topic_list
,
offset
,
size
,
es_cli_obj
=
None
):
filter_topic_user_id
,
have_read_topic_list
,
offset
,
size
,
es_cli_obj
=
None
,
index_type
=
"topic"
):
"""
"""
:remark 帖子详情页推荐列表,缺少按时间衰减
:remark 帖子详情页推荐列表,缺少按时间衰减
:param user_id:
:param user_id:
...
@@ -423,7 +435,7 @@ class TopicUtils(object):
...
@@ -423,7 +435,7 @@ class TopicUtils(object):
"query"
:
{
"query"
:
{
"bool"
:
{
"bool"
:
{
"must"
:
[
"must"
:
[
{
"range"
:
{
"content_level"
:
{
"gte"
:
3
,
"lte"
:
5
}}},
#
{"range": {"content_level": {"gte": 3, "lte": 5}}},
{
"term"
:
{
"is_online"
:
True
}},
{
"term"
:
{
"is_online"
:
True
}},
{
"term"
:
{
"is_deleted"
:
False
}}
{
"term"
:
{
"is_deleted"
:
False
}}
],
],
...
@@ -452,7 +464,7 @@ class TopicUtils(object):
...
@@ -452,7 +464,7 @@ class TopicUtils(object):
"includes"
:
[
"id"
,
"pictorial_id"
,
"user_id"
,
"_score"
]
"includes"
:
[
"id"
,
"pictorial_id"
,
"user_id"
,
"_score"
]
}
}
result_dict
=
ESPerform
.
get_search_results
(
es_cli_obj
,
sub_index_name
=
"topic"
,
query_body
=
q
,
result_dict
=
ESPerform
.
get_search_results
(
es_cli_obj
,
sub_index_name
=
index_type
,
query_body
=
q
,
offset
=
offset
,
size
=
size
)
offset
=
offset
,
size
=
size
)
return
result_dict
[
"hits"
]
return
result_dict
[
"hits"
]
...
@@ -604,6 +616,12 @@ class TopicUtils(object):
...
@@ -604,6 +616,12 @@ class TopicUtils(object):
})
})
if
k
==
"is_complaint"
:
f
.
append
({
"term"
:
{
k
:
v
},
})
if
not
v
:
if
not
v
:
continue
continue
...
@@ -636,6 +654,29 @@ class TopicUtils(object):
...
@@ -636,6 +654,29 @@ class TopicUtils(object):
}
}
}
}
})
})
elif
k
.
startswith
(
"__gte"
)
or
k
.
startswith
(
"__lte"
)
or
\
k
.
startswith
(
"__gt"
)
or
k
.
startswith
(
"__lt"
):
if
k
.
startswith
(
"__gte"
):
op
=
"gte"
filed
=
k
[:
-
5
]
elif
k
==
"__lte"
:
op
=
"lte"
filed
=
k
[:
-
5
]
elif
k
==
"__gt"
:
op
=
"lte"
filed
=
k
[:
-
4
]
elif
k
==
"__lt"
:
op
=
"lte"
filed
=
k
[:
-
4
]
f
.
append
({
"range"
:
{
filed
:
{
op
:
v
,
}
}
})
else
:
else
:
if
isinstance
(
v
,
list
):
if
isinstance
(
v
,
list
):
f
.
append
({
f
.
append
({
...
@@ -785,9 +826,6 @@ class TopicUtils(object):
...
@@ -785,9 +826,6 @@ class TopicUtils(object):
}
}
logging
.
info
(
"get query business_topic:
%
s"
%
q
)
if
sorts_by
:
if
sorts_by
:
sorts
=
cls
.
process_sort
(
sorts_by
)
sorts
=
cls
.
process_sort
(
sorts_by
)
if
sorts
:
if
sorts
:
...
@@ -809,4 +847,3 @@ class TopicUtils(object):
...
@@ -809,4 +847,3 @@ class TopicUtils(object):
"hits"
:
[],
"hits"
:
[],
"total_count"
:
0
"total_count"
:
0
}
}
search/views/group.py
View file @
3665c234
...
@@ -13,7 +13,7 @@ from libs.es import ESPerform
...
@@ -13,7 +13,7 @@ from libs.es import ESPerform
@bind
(
"physical/search/query_pictorial"
)
@bind
(
"physical/search/query_pictorial"
)
def
query_
group
(
query
=
""
,
offset
=
0
,
size
=
10
):
def
query_
pictorial
(
query
=
""
,
offset
=
0
,
size
=
10
):
"""
"""
:remark:小组搜索排序策略,缺少排序策略
:remark:小组搜索排序策略,缺少排序策略
:param query:
:param query:
...
@@ -105,7 +105,7 @@ def pictorial_topic(topic_id=-1, offset=0, size=10):
...
@@ -105,7 +105,7 @@ def pictorial_topic(topic_id=-1, offset=0, size=10):
}
}
}
}
q
[
"_source"
]
=
{
q
[
"_source"
]
=
{
"include"
:
[
"id"
,
"pictorial_id"
,
"tag_list"
]
"include
s
"
:
[
"id"
,
"pictorial_id"
,
"tag_list"
]
}
}
result_dict
=
ESPerform
.
get_search_results
(
es_cli_obj
,
"topic"
,
q
,
offset
,
size
)
result_dict
=
ESPerform
.
get_search_results
(
es_cli_obj
,
"topic"
,
q
,
offset
,
size
)
logging
.
info
(
"get result_dict:
%
s"
%
result_dict
)
logging
.
info
(
"get result_dict:
%
s"
%
result_dict
)
...
@@ -142,7 +142,7 @@ def pictorial_topic(topic_id=-1, offset=0, size=10):
...
@@ -142,7 +142,7 @@ def pictorial_topic(topic_id=-1, offset=0, size=10):
}
}
q
[
"_source"
]
=
{
q
[
"_source"
]
=
{
"include"
:
[
"id"
,
"update_time"
]
"include
s
"
:
[
"id"
,
"update_time"
]
}
}
q
[
"sort"
]
=
{
q
[
"sort"
]
=
{
'update_time'
:
{
'update_time'
:
{
...
@@ -155,8 +155,6 @@ def pictorial_topic(topic_id=-1, offset=0, size=10):
...
@@ -155,8 +155,6 @@ def pictorial_topic(topic_id=-1, offset=0, size=10):
for
item
in
result_dict
[
"hits"
]:
for
item
in
result_dict
[
"hits"
]:
pictorial_id
=
item
[
"_source"
][
"id"
]
pictorial_id
=
item
[
"_source"
][
"id"
]
pictorial_id_list
.
append
(
pictorial_id
)
pictorial_id_list
.
append
(
pictorial_id
)
logging
.
info
(
"get pictorial_id_list:
%
s"
%
pictorial_id_list
)
logging
.
info
(
"get topic_tag_list:
%
s"
%
topic_tag_list
)
if
len
(
pictorial_id_list
)
<
10
:
if
len
(
pictorial_id_list
)
<
10
:
num
=
10
-
len
(
pictorial_id_list
)
num
=
10
-
len
(
pictorial_id_list
)
...
@@ -177,7 +175,7 @@ def pictorial_topic(topic_id=-1, offset=0, size=10):
...
@@ -177,7 +175,7 @@ def pictorial_topic(topic_id=-1, offset=0, size=10):
}
}
}
}
q
[
"_source"
]
=
{
q
[
"_source"
]
=
{
"include"
:
[
"id"
,
"tag_id"
]}
"include
s
"
:
[
"id"
,
"tag_id"
]}
q
[
"sort"
]
=
{
q
[
"sort"
]
=
{
'update_time'
:
{
'update_time'
:
{
'order'
:
'desc'
'order'
:
'desc'
...
@@ -194,9 +192,6 @@ def pictorial_topic(topic_id=-1, offset=0, size=10):
...
@@ -194,9 +192,6 @@ def pictorial_topic(topic_id=-1, offset=0, size=10):
if
id
not
in
pictorial_id_list
:
if
id
not
in
pictorial_id_list
:
pictorial_id_list
.
append
(
id
)
#
pictorial_id_list
.
append
(
id
)
#
logging
.
info
(
"get result_dict tag:
%
s"
%
result_dict
)
logging
.
info
(
"get pictorial_id_list tag:
%
s"
%
pictorial_id_list
)
pictorial_list
=
pictorial_id_list
if
len
(
pictorial_id_list
)
<
10
else
pictorial_id_list
[:
10
]
pictorial_list
=
pictorial_id_list
if
len
(
pictorial_id_list
)
<
10
else
pictorial_id_list
[:
10
]
return
{
"pictorial_ids_list"
:
pictorial_list
}
return
{
"pictorial_ids_list"
:
pictorial_list
}
...
...
search/views/topic.py
View file @
3665c234
...
@@ -27,7 +27,7 @@ def get_discover_page_topic_ids(user_id, device_id, size, query_type=TopicPageTy
...
@@ -27,7 +27,7 @@ def get_discover_page_topic_ids(user_id, device_id, size, query_type=TopicPageTy
recommend_topic_ids
=
TopicUtils
.
get_recommend_topic_ids
(
user_id
=
user_id
,
tag_id
=
0
,
offset
=
0
,
size
=
size
,
single_size
=
size
,
recommend_topic_ids
=
TopicUtils
.
get_recommend_topic_ids
(
user_id
=
user_id
,
tag_id
=
0
,
offset
=
0
,
size
=
size
,
single_size
=
size
,
query_type
=
query_type
,
query_type
=
query_type
,
filter_topic_id_list
=
have_read_topic_id_list
)
filter_topic_id_list
=
have_read_topic_id_list
,
index_type
=
"topic-high-star"
)
have_read_topic_id_list
.
extend
(
recommend_topic_ids
)
have_read_topic_id_list
.
extend
(
recommend_topic_ids
)
...
@@ -46,33 +46,43 @@ def get_home_recommend_topic_ids(user_id, device_id, tag_id, offset, size, query
...
@@ -46,33 +46,43 @@ def get_home_recommend_topic_ids(user_id, device_id, tag_id, offset, size, query
query_type
=
TopicPageType
.
HOME_RECOMMEND
):
query_type
=
TopicPageType
.
HOME_RECOMMEND
):
try
:
try
:
if
query
is
None
:
if
query
is
None
:
if
user_id
==
-
1
:
# redis_key = "physical:home_recommend" + ":user_id:" + str(
redis_key
=
"physical:home_recommend"
+
":user_id:"
+
str
(
# user_id) + ":device_id:" + device_id + ":query_type:" + str(query_type)
user_id
)
+
":device_id:"
+
device_id
+
":query_type:"
+
str
(
query_type
)
redis_key
=
"physical:home_recommend"
+
":device_id:"
+
device_id
+
":query_type:"
+
str
(
query_type
)
else
:
redis_key
=
"physical:home_recommend"
+
":user_id:"
+
str
(
user_id
)
+
":query_type:"
+
str
(
query_type
)
else
:
if
user_id
==
-
1
:
redis_key
=
"physical:home_query"
+
":user_id:"
+
str
(
user_id
)
+
":device_id:"
+
device_id
+
":query:"
+
str
(
query
)
+
":query_type:"
+
str
(
query_type
)
else
:
else
:
redis_key
=
"physical:home_query"
+
":user_id:"
+
str
(
user_id
)
+
":query:"
+
str
(
# redis_key = "physical:home_query" + ":user_id:" + str(
query
)
+
":query_type:"
+
str
(
query_type
)
# user_id) + ":device_id:" + device_id + ":query:" + str(query) + ":query_type:" + str(query_type)
redis_key
=
"physical:home_query"
+
":device_id:"
+
device_id
+
":query:"
+
str
(
query
)
+
":query_type:"
+
str
(
query_type
)
redis_field_list
=
[
b
'have_read_topic_list'
]
redis_field_list
=
[
b
'have_read_topic_list'
]
redis_field_val_list
=
redis_client
.
hmget
(
redis_key
,
redis_field_list
)
redis_field_val_list
=
redis_client
.
hmget
(
redis_key
,
redis_field_list
)
tag_recommend_redis_key
=
"physical:linucb:tag_recommend:device_id:"
+
str
(
device_id
)
topic_recommend_redis_key
=
"physical:linucb:topic_recommend:device_id:"
+
str
(
device_id
)
# recommend_tag_dict = dict()
# tag_recommend_val = redis_client.get(tag_recommend_redis_key)
# if tag_recommend_val:
# recommend_tag_dict = json.loads(str(tag_recommend_val, encoding="utf-8"))
recommend_tag_list
=
[]
recommend_topic_list
=
list
()
tag_recommend_val
=
redis_client
.
get
(
tag_recommend_redis_key
)
recommend_topic_dict
=
redis_client
.
hgetall
(
topic_recommend_redis_key
)
if
tag_recommend_val
:
if
b
"data"
in
recommend_topic_dict
:
recommend_tag_list
=
json
.
loads
(
str
(
tag_recommend_val
,
encoding
=
"utf-8"
))
recommend_topic_id_list
=
json
.
loads
(
recommend_topic_dict
[
b
"data"
])
cursor
=
int
(
str
(
recommend_topic_dict
[
b
"cursor"
],
encoding
=
"utf-8"
))
newcursor
=
cursor
+
5
if
len
(
recommend_topic_id_list
)
>
newcursor
:
recommend_topic_list
=
recommend_topic_id_list
[
cursor
:
newcursor
]
redis_client
.
hset
(
topic_recommend_redis_key
,
"cursor"
,
newcursor
)
recommend_topic_ids
=
[]
have_read_topic_id_list
=
list
()
have_read_topic_id_list
=
list
()
if
redis_field_val_list
[
0
]
and
query
is
None
:
if
redis_field_val_list
[
0
]:
if
query
is
None
:
have_read_topic_id_list
=
list
(
json
.
loads
(
redis_field_val_list
[
0
]))
else
:
if
offset
>
0
:
have_read_topic_id_list
=
list
(
json
.
loads
(
redis_field_val_list
[
0
]))
have_read_topic_id_list
=
list
(
json
.
loads
(
redis_field_val_list
[
0
]))
user_similar_score_redis_key
=
"physical:user_similar_score:user_id:"
+
str
(
user_id
)
user_similar_score_redis_key
=
"physical:user_similar_score:user_id:"
+
str
(
user_id
)
...
@@ -80,11 +90,12 @@ def get_home_recommend_topic_ids(user_id, device_id, tag_id, offset, size, query
...
@@ -80,11 +90,12 @@ def get_home_recommend_topic_ids(user_id, device_id, tag_id, offset, size, query
user_similar_score_redis_list
=
json
.
loads
(
user_similar_score_redis_list
=
json
.
loads
(
redis_user_similar_score_redis_val
)
if
redis_user_similar_score_redis_val
else
[]
redis_user_similar_score_redis_val
)
if
redis_user_similar_score_redis_val
else
[]
size
=
size
-
len
(
recommend_topic_list
)
topic_id_list
=
TopicUtils
.
get_recommend_topic_ids
(
user_id
=
user_id
,
tag_id
=
tag_id
,
offset
=
offset
,
size
=
size
,
topic_id_list
=
TopicUtils
.
get_recommend_topic_ids
(
user_id
=
user_id
,
tag_id
=
tag_id
,
offset
=
offset
,
size
=
size
,
single_size
=
size
,
query
=
query
,
query_type
=
query_type
,
single_size
=
size
,
query
=
query
,
query_type
=
query_type
,
filter_topic_id_list
=
have_read_topic_id_list
,
filter_topic_id_list
=
have_read_topic_id_list
,
recommend_tag_list
=
recommend_t
ag
_list
,
recommend_tag_list
=
recommend_t
opic
_list
,
user_similar_score_list
=
user_similar_score_redis_list
)
user_similar_score_list
=
user_similar_score_redis_list
,
index_type
=
"topic-high-star"
)
have_read_group_id_set
=
set
()
have_read_group_id_set
=
set
()
have_read_user_id_set
=
set
()
have_read_user_id_set
=
set
()
unread_topic_id_dict
=
dict
()
unread_topic_id_dict
=
dict
()
...
@@ -125,18 +136,19 @@ def get_home_recommend_topic_ids(user_id, device_id, tag_id, offset, size, query
...
@@ -125,18 +136,19 @@ def get_home_recommend_topic_ids(user_id, device_id, tag_id, offset, size, query
# else:
# else:
# break
# break
have_read_topic_id_list
.
extend
(
topic_id_list
)
recommend_topic_list
.
extend
(
topic_id_list
)
if
len
(
have_read_topic_id_list
)
>
5000
:
have_read_topic_id_list
.
extend
(
recommend_topic_list
)
cut_len
=
len
(
have_read_topic_id_list
)
-
5000
if
len
(
have_read_topic_id_list
)
>
30000
:
cut_len
=
len
(
have_read_topic_id_list
)
-
30000
have_read_topic_id_list
=
have_read_topic_id_list
[
cut_len
:]
have_read_topic_id_list
=
have_read_topic_id_list
[
cut_len
:]
redis_dict
=
{
redis_dict
=
{
"have_read_topic_list"
:
json
.
dumps
(
have_read_topic_id_list
),
"have_read_topic_list"
:
json
.
dumps
(
have_read_topic_id_list
),
}
}
redis_client
.
hmset
(
redis_key
,
redis_dict
)
redis_client
.
hmset
(
redis_key
,
redis_dict
)
# 每个session key保存15分钟
# 每个session key保存15分钟
redis_client
.
expire
(
redis_key
,
60
*
60
*
24
*
3
)
redis_client
.
expire
(
redis_key
,
60
*
60
*
24
*
3
0
)
return
topic_id
_list
return
recommend_topic
_list
except
:
except
:
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
return
[]
return
[]
...
@@ -170,11 +182,11 @@ def home_recommend(device_id="", user_id=-1, offset=0, size=10, query_type=Topic
...
@@ -170,11 +182,11 @@ def home_recommend(device_id="", user_id=-1, offset=0, size=10, query_type=Topic
recommend_topic_ids
=
list
()
recommend_topic_ids
=
list
()
es_node_load_high_flag
=
False
es_node_load_high_flag
=
False
try
:
#
try:
es_node_load_high_flag
=
ESPerform
.
if_es_node_load_high
(
ESPerform
.
get_cli
())
#
es_node_load_high_flag = ESPerform.if_es_node_load_high(ESPerform.get_cli())
except
:
#
except:
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
#
logging.error("catch exception,err_msg:%s" % traceback.format_exc())
es_node_load_high_flag
=
True
#
es_node_load_high_flag = True
if
es_node_load_high_flag
:
if
es_node_load_high_flag
:
temp_downgrading_key
=
"physical:home_recommend:user_id:241407656:query_type:1"
temp_downgrading_key
=
"physical:home_recommend:user_id:241407656:query_type:1"
...
@@ -273,7 +285,7 @@ def topic_detail_page_recommend(device_id="", user_id=-1, topic_id=-1, topic_pic
...
@@ -273,7 +285,7 @@ def topic_detail_page_recommend(device_id="", user_id=-1, topic_id=-1, topic_pic
result_list
=
TopicUtils
.
get_topic_detail_recommend_list
(
user_id
,
topic_id
,
topic_tag_list
,
topic_pictorial_id
,
result_list
=
TopicUtils
.
get_topic_detail_recommend_list
(
user_id
,
topic_id
,
topic_tag_list
,
topic_pictorial_id
,
topic_user_id
,
filter_topic_user_id
,
topic_user_id
,
filter_topic_user_id
,
have_read_topic_list
,
offset
,
size
,
es_cli_obj
)
have_read_topic_list
,
offset
,
size
,
es_cli_obj
,
index_type
=
"topic-high-star"
)
recommend_topic_ids_list
=
list
()
recommend_topic_ids_list
=
list
()
if
len
(
result_list
)
>
0
:
if
len
(
result_list
)
>
0
:
recommend_topic_ids_list
=
[
item
[
"_source"
][
"id"
]
for
item
in
result_list
]
recommend_topic_ids_list
=
[
item
[
"_source"
][
"id"
]
for
item
in
result_list
]
...
@@ -347,7 +359,7 @@ def query_topic_by_user_similarity(topic_similarity_score_dict, offset=0, size=1
...
@@ -347,7 +359,7 @@ def query_topic_by_user_similarity(topic_similarity_score_dict, offset=0, size=1
try
:
try
:
must_topic_id_list
=
list
(
topic_similarity_score_dict
.
keys
())
must_topic_id_list
=
list
(
topic_similarity_score_dict
.
keys
())
topic_id_list
=
TopicUtils
.
get_recommend_topic_ids
(
tag_id
=
0
,
user_id
=-
1
,
offset
=
offset
,
size
=
size
,
single_size
=
size
,
topic_id_list
=
TopicUtils
.
get_recommend_topic_ids
(
tag_id
=
0
,
user_id
=-
1
,
offset
=
offset
,
size
=
size
,
single_size
=
size
,
must_topic_id_list
=
must_topic_id_list
)
must_topic_id_list
=
must_topic_id_list
,
index_type
=
"topic-high-star"
)
return
{
"recommend_topic_ids"
:
topic_id_list
}
return
{
"recommend_topic_ids"
:
topic_id_list
}
except
:
except
:
...
...
trans2es/management/commands/trans2es_data2es_parallel.py
View file @
3665c234
...
@@ -49,6 +49,7 @@ class Job(object):
...
@@ -49,6 +49,7 @@ class Job(object):
def
__call__
(
self
):
def
__call__
(
self
):
type_info
=
get_type_info_map
()[
self
.
_type_name
]
type_info
=
get_type_info_map
()[
self
.
_type_name
]
assert
isinstance
(
type_info
,
TypeInfo
)
assert
isinstance
(
type_info
,
TypeInfo
)
result
=
type_info
.
insert_table_chunk
(
result
=
type_info
.
insert_table_chunk
(
sub_index_name
=
self
.
_sub_index_name
,
sub_index_name
=
self
.
_sub_index_name
,
table_chunk
=
self
.
_chunk
,
table_chunk
=
self
.
_chunk
,
...
...
trans2es/mapping/topic-high-star.json
0 → 100644
View file @
3665c234
{
"dynamic"
:
"strict"
,
"properties"
:
{
"id"
:{
"type"
:
"long"
},
"is_online"
:{
"type"
:
"boolean"
},
//上线
"is_deleted"
:{
"type"
:
"boolean"
},
"vote_num"
:{
"type"
:
"long"
},
"reply_num"
:{
"type"
:
"long"
},
"name"
:{
"type"
:
"text"
,
"analyzer"
:
"gm_default_index"
,
"search_analyzer"
:
"gm_default_index"
},
"description"
:{
"type"
:
"text"
,
"analyzer"
:
"gm_default_index"
,
"search_analyzer"
:
"gm_default_index"
},
"content"
:{
"type"
:
"text"
,
"analyzer"
:
"gm_default_index"
,
"search_analyzer"
:
"gm_default_index"
},
"content_level"
:{
"type"
:
"text"
},
"user_id"
:{
"type"
:
"long"
},
"user_nick_name"
:{
"type"
:
"text"
,
"analyzer"
:
"gm_default_index"
,
"search_analyzer"
:
"gm_default_index"
},
//帖子用户名
"group_id"
:{
"type"
:
"long"
},
//所在组ID
"tag_list"
:{
"type"
:
"long"
},
//标签属性
"edit_tag_list"
:{
"type"
:
"long"
},
//编辑标签
"tag_name_list"
:{
"type"
:
"text"
,
"analyzer"
:
"gm_default_index"
,
"search_analyzer"
:
"gm_default_index"
},
"share_num"
:{
"type"
:
"long"
},
"pick_id_list"
:{
"type"
:
"long"
},
"offline_score"
:{
"type"
:
"double"
},
//离线算分
"manual_score"
:{
"type"
:
"double"
},
//人工赋分
"has_image"
:{
"type"
:
"boolean"
},
//是否有图
"has_video"
:{
"type"
:
"boolean"
},
//是否是视频
"create_time"
:{
"type"
:
"date"
,
"format"
:
"date_time_no_millis"
},
"update_time"
:{
"type"
:
"date"
,
"format"
:
"date_time_no_millis"
},
"create_time_val"
:{
"type"
:
"long"
},
"update_time_val"
:{
"type"
:
"long"
},
"language_type"
:{
"type"
:
"long"
},
"is_shadow"
:
{
"type"
:
"boolean"
},
"is_recommend"
:
{
"type"
:
"boolean"
},
"is_complaint"
:
{
"type"
:
"boolean"
},
//
是否被举报
"virtual_content_level"
:{
"type"
:
"text"
},
"like_num_crawl"
:
{
"type"
:
"long"
},
//
爬取点赞数
"comment_num_crawl"
:
{
"type"
:
"long"
},
//
爬取评论数
"is_crawl"
:
{
"type"
:
"boolean"
},
"platform"
:
{
"type"
:
"long"
},
"platform_id"
:
{
"type"
:
"long"
},
"drop_score"
:{
"type"
:
"double"
},
//
人工降分
"sort_score"
:{
"type"
:
"double"
},
//
排序分
"pictorial_id"
:{
"type"
:
"long"
},
//所在组ID
"pictorial_name"
:{
//
所在组名称
"type"
:
"text"
,
"analyzer"
:
"gm_default_index"
,
"search_analyzer"
:
"gm_default_index"
}
}
}
trans2es/mapping/topic-star-routing.json
0 → 100644
View file @
3665c234
{
"dynamic"
:
"strict"
,
"properties"
:
{
"id"
:{
"type"
:
"long"
},
"is_online"
:{
"type"
:
"boolean"
},
//上线
"is_deleted"
:{
"type"
:
"boolean"
},
"vote_num"
:{
"type"
:
"long"
},
"reply_num"
:{
"type"
:
"long"
},
"name"
:{
"type"
:
"text"
,
"analyzer"
:
"gm_default_index"
,
"search_analyzer"
:
"gm_default_index"
},
"description"
:{
"type"
:
"text"
,
"analyzer"
:
"gm_default_index"
,
"search_analyzer"
:
"gm_default_index"
},
"content"
:{
"type"
:
"text"
,
"analyzer"
:
"gm_default_index"
,
"search_analyzer"
:
"gm_default_index"
},
"content_level"
:{
"type"
:
"text"
},
"user_id"
:{
"type"
:
"long"
},
"user_nick_name"
:{
"type"
:
"text"
,
"analyzer"
:
"gm_default_index"
,
"search_analyzer"
:
"gm_default_index"
},
//帖子用户名
"group_id"
:{
"type"
:
"long"
},
//所在组ID
"tag_list"
:{
"type"
:
"long"
},
//标签属性
"edit_tag_list"
:{
"type"
:
"long"
},
//编辑标签
"tag_name_list"
:{
"type"
:
"text"
,
"analyzer"
:
"gm_default_index"
,
"search_analyzer"
:
"gm_default_index"
},
"share_num"
:{
"type"
:
"long"
},
"pick_id_list"
:{
"type"
:
"long"
},
"offline_score"
:{
"type"
:
"double"
},
//离线算分
"manual_score"
:{
"type"
:
"double"
},
//人工赋分
"has_image"
:{
"type"
:
"boolean"
},
//是否有图
"has_video"
:{
"type"
:
"boolean"
},
//是否是视频
"create_time"
:{
"type"
:
"date"
,
"format"
:
"date_time_no_millis"
},
"update_time"
:{
"type"
:
"date"
,
"format"
:
"date_time_no_millis"
},
"create_time_val"
:{
"type"
:
"long"
},
"update_time_val"
:{
"type"
:
"long"
},
"language_type"
:{
"type"
:
"long"
},
"is_shadow"
:
{
"type"
:
"boolean"
},
"is_recommend"
:
{
"type"
:
"boolean"
},
"is_complaint"
:
{
"type"
:
"boolean"
},
//
是否被举报
"virtual_content_level"
:{
"type"
:
"text"
},
"like_num_crawl"
:
{
"type"
:
"long"
},
//
爬取点赞数
"comment_num_crawl"
:
{
"type"
:
"long"
},
//
爬取评论数
"is_crawl"
:
{
"type"
:
"boolean"
},
"platform"
:
{
"type"
:
"long"
},
"platform_id"
:
{
"type"
:
"long"
},
"drop_score"
:{
"type"
:
"double"
},
//
人工降分
"sort_score"
:{
"type"
:
"double"
},
//
排序分
"pictorial_id"
:{
"type"
:
"long"
},
//所在组ID
"pictorial_name"
:{
//
所在组名称
"type"
:
"text"
,
"analyzer"
:
"gm_default_index"
,
"search_analyzer"
:
"gm_default_index"
}
}
}
trans2es/mapping/topic.json
View file @
3665c234
...
@@ -5,12 +5,14 @@
...
@@ -5,12 +5,14 @@
"is_online"
:{
"type"
:
"boolean"
},
//上线
"is_online"
:{
"type"
:
"boolean"
},
//上线
"is_deleted"
:{
"type"
:
"boolean"
},
"is_deleted"
:{
"type"
:
"boolean"
},
"vote_num"
:{
"type"
:
"long"
},
"vote_num"
:{
"type"
:
"long"
},
"total_vote_num"
:{
"type"
:
"long"
},
"reply_num"
:{
"type"
:
"long"
},
"reply_num"
:{
"type"
:
"long"
},
"name"
:{
"type"
:
"text"
,
"analyzer"
:
"gm_default_index"
,
"search_analyzer"
:
"gm_default_index"
},
"name"
:{
"type"
:
"text"
,
"analyzer"
:
"gm_default_index"
,
"search_analyzer"
:
"gm_default_index"
},
"description"
:{
"type"
:
"text"
,
"analyzer"
:
"gm_default_index"
,
"search_analyzer"
:
"gm_default_index"
},
"description"
:{
"type"
:
"text"
,
"analyzer"
:
"gm_default_index"
,
"search_analyzer"
:
"gm_default_index"
},
"content"
:{
"type"
:
"text"
,
"analyzer"
:
"gm_default_index"
,
"search_analyzer"
:
"gm_default_index"
},
"content"
:{
"type"
:
"text"
,
"analyzer"
:
"gm_default_index"
,
"search_analyzer"
:
"gm_default_index"
},
"content_level"
:{
"type"
:
"text"
},
"content_level"
:{
"type"
:
"text"
},
"user_id"
:{
"type"
:
"long"
},
"user_id"
:{
"type"
:
"long"
},
"user_nick_name"
:{
"type"
:
"text"
,
"analyzer"
:
"gm_default_index"
,
"search_analyzer"
:
"gm_default_index"
},
//帖子用户名
"group_id"
:{
"type"
:
"long"
},
//所在组ID
"group_id"
:{
"type"
:
"long"
},
//所在组ID
"tag_list"
:{
"type"
:
"long"
},
//标签属性
"tag_list"
:{
"type"
:
"long"
},
//标签属性
"edit_tag_list"
:{
"type"
:
"long"
},
//编辑标签
"edit_tag_list"
:{
"type"
:
"long"
},
//编辑标签
...
...
trans2es/models/group.py
View file @
3665c234
...
@@ -27,15 +27,15 @@ class Group(models.Model):
...
@@ -27,15 +27,15 @@ class Group(models.Model):
create_time
=
models
.
DateTimeField
(
verbose_name
=
u'创建时间'
,
default
=
datetime
.
datetime
.
fromtimestamp
(
0
))
create_time
=
models
.
DateTimeField
(
verbose_name
=
u'创建时间'
,
default
=
datetime
.
datetime
.
fromtimestamp
(
0
))
update_time
=
models
.
DateTimeField
(
verbose_name
=
u'更新时间'
,
default
=
datetime
.
datetime
.
fromtimestamp
(
0
))
update_time
=
models
.
DateTimeField
(
verbose_name
=
u'更新时间'
,
default
=
datetime
.
datetime
.
fromtimestamp
(
0
))
#
#
获取前一天4,5星发帖数
#获取前一天4,5星发帖数
#
def get_high_quality_topic_num(self):
def
get_high_quality_topic_num
(
self
):
#
yesterday = datetime.datetime.now()-datetime.timedelta(days=1)
yesterday
=
datetime
.
datetime
.
now
()
-
datetime
.
timedelta
(
days
=
1
)
#
yesterday_begin_time = "%s-%s-%s 00:00:00" % (yesterday.year, yesterday.month, yesterday.day)
yesterday_begin_time
=
"
%
s-
%
s-
%
s 00:00:00"
%
(
yesterday
.
year
,
yesterday
.
month
,
yesterday
.
day
)
#
yesterday_end_time = "%s-%s-%s 23:59:59" % (yesterday.year, yesterday.month, yesterday.day)
yesterday_end_time
=
"
%
s-
%
s-
%
s 23:59:59"
%
(
yesterday
.
year
,
yesterday
.
month
,
yesterday
.
day
)
#
#
topic_num = self.group_topics.filter(content_level__in=("4","5"),create_time__gte=yesterday_begin_time,create_time__lte=yesterday_end_time).count()
topic_num
=
self
.
group_topics
.
filter
(
content_level__in
=
(
"4"
,
"5"
),
create_time__gte
=
yesterday_begin_time
,
create_time__lte
=
yesterday_end_time
)
.
count
()
#
#
return topic_num
return
topic_num
def
detail
(
self
):
def
detail
(
self
):
result
=
{
result
=
{
...
...
trans2es/models/pictorial.py
View file @
3665c234
from
django.db
import
models
import
datetime
import
datetime
from
django.db
import
models
import
logging
import
logging
import
traceback
import
traceback
...
@@ -109,7 +109,6 @@ class Pictorial(models.Model):
...
@@ -109,7 +109,6 @@ class Pictorial(models.Model):
tags
=
Tag
.
objects
.
filter
(
id__in
=
tag_id
,
is_online
=
True
)
.
values_list
(
"name"
,
flat
=
True
)
tags
=
Tag
.
objects
.
filter
(
id__in
=
tag_id
,
is_online
=
True
)
.
values_list
(
"name"
,
flat
=
True
)
for
i
in
tags
:
for
i
in
tags
:
tag_name_list
.
append
(
i
)
tag_name_list
.
append
(
i
)
logging
.
info
(
"get tags name i:
%
s"
%
i
)
return
tag_name_list
return
tag_name_list
...
...
trans2es/models/topic.py
View file @
3665c234
...
@@ -52,9 +52,9 @@ class Topic(models.Model):
...
@@ -52,9 +52,9 @@ class Topic(models.Model):
id
=
models
.
IntegerField
(
verbose_name
=
u'日记ID'
,
primary_key
=
True
)
id
=
models
.
IntegerField
(
verbose_name
=
u'日记ID'
,
primary_key
=
True
)
name
=
models
.
CharField
(
verbose_name
=
u'日记名称'
,
max_length
=
100
)
name
=
models
.
CharField
(
verbose_name
=
u'日记名称'
,
max_length
=
100
)
# group_id = models.IntegerField(verbose_name='用户所在组ID',default=-1)
# group_id = models.IntegerField(verbose_name='用户所在组ID',default=-1)
#
group = models.ForeignKey(
group
=
models
.
ForeignKey
(
#
Group, verbose_name=u"关联的小组", related_name=u"group_topics", null=True, blank=True, default=None,
Group
,
verbose_name
=
u"关联的小组"
,
related_name
=
u"group_topics"
,
null
=
True
,
blank
=
True
,
default
=
None
,
#
on_delete=models.CASCADE)
on_delete
=
models
.
CASCADE
)
user_id
=
models
.
IntegerField
(
verbose_name
=
u'用户ID'
)
user_id
=
models
.
IntegerField
(
verbose_name
=
u'用户ID'
)
has_video
=
models
.
BooleanField
(
verbose_name
=
u'是否是视频日记'
)
has_video
=
models
.
BooleanField
(
verbose_name
=
u'是否是视频日记'
)
drop_score
=
models
.
IntegerField
(
verbose_name
=
u'人工赋分'
,
default
=
0
)
drop_score
=
models
.
IntegerField
(
verbose_name
=
u'人工赋分'
,
default
=
0
)
...
@@ -82,6 +82,14 @@ class Topic(models.Model):
...
@@ -82,6 +82,14 @@ class Topic(models.Model):
platform
=
models
.
IntegerField
(
verbose_name
=
u'平台来源'
,
choices
=
GRAP_PLATFORM
,
default
=
GRAP_PLATFORM
.
ALPHA
)
platform
=
models
.
IntegerField
(
verbose_name
=
u'平台来源'
,
choices
=
GRAP_PLATFORM
,
default
=
GRAP_PLATFORM
.
ALPHA
)
platform_id
=
models
.
BigIntegerField
(
verbose_name
=
'用平台ID'
,
null
=
True
)
platform_id
=
models
.
BigIntegerField
(
verbose_name
=
'用平台ID'
,
null
=
True
)
def
get_virtual_vote_num
(
self
):
try
:
topic_extra
=
TopicExtra
.
object
.
get
(
topic_id
=
self
.
id
)
return
topic_extra
.
virtual_vote_num
except
:
return
0
def
get_pictorial_id
(
self
):
def
get_pictorial_id
(
self
):
try
:
try
:
pictorial_id_list
=
[]
pictorial_id_list
=
[]
...
@@ -106,8 +114,7 @@ class Topic(models.Model):
...
@@ -106,8 +114,7 @@ class Topic(models.Model):
try
:
try
:
has_image
=
False
has_image
=
False
query_list
=
TopicImage
.
objects
.
using
(
settings
.
SLAVE_DB_NAME
)
.
filter
(
topic_id
=
self
.
id
,
is_deleted
=
False
,
query_list
=
TopicImage
.
objects
.
using
(
settings
.
SLAVE_DB_NAME
)
.
filter
(
topic_id
=
self
.
id
,
is_deleted
=
False
,
is_online
=
True
)
is_online
=
True
)
if
len
(
query_list
)
>
0
:
if
len
(
query_list
)
>
0
:
has_image
=
True
has_image
=
True
...
@@ -133,13 +140,12 @@ class Topic(models.Model):
...
@@ -133,13 +140,12 @@ class Topic(models.Model):
topic_tag_id_list
=
list
()
topic_tag_id_list
=
list
()
edit_tag_id_list
=
list
()
edit_tag_id_list
=
list
()
tag_id_list
=
TopicTag
.
objects
.
using
(
settings
.
SLAVE_DB_NAME
)
.
filter
(
topic_id
=
self
.
id
)
.
values_list
(
"tag_id"
,
tag_id_list
=
TopicTag
.
objects
.
using
(
settings
.
SLAVE_DB_NAME
)
.
filter
(
topic_id
=
self
.
id
)
.
values_list
(
"tag_id"
,
flat
=
True
)
flat
=
True
)
tag_query_results
=
Tag
.
objects
.
using
(
settings
.
SLAVE_DB_NAME
)
.
filter
(
id__in
=
tag_id_list
)
tag_query_results
=
Tag
.
objects
.
using
(
settings
.
SLAVE_DB_NAME
)
.
filter
(
id__in
=
tag_id_list
)
for
tag_item
in
tag_query_results
:
for
tag_item
in
tag_query_results
:
is_online
=
tag_item
.
is_online
is_online
=
tag_item
.
is_online
is_deleted
=
tag_item
.
is_deleted
is_deleted
=
tag_item
.
is_deleted
collection
=
tag_item
.
collection
collection
=
tag_item
.
collection
if
is_online
and
not
is_deleted
:
if
is_online
and
not
is_deleted
:
topic_tag_id_list
.
append
(
tag_item
.
id
)
topic_tag_id_list
.
append
(
tag_item
.
id
)
...
@@ -149,7 +155,7 @@ class Topic(models.Model):
...
@@ -149,7 +155,7 @@ class Topic(models.Model):
return
(
topic_tag_id_list
,
edit_tag_id_list
)
return
(
topic_tag_id_list
,
edit_tag_id_list
)
except
:
except
:
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
return
([],
[])
return
([],[])
def
get_tag_name_list
(
self
,
tag_id_list
):
def
get_tag_name_list
(
self
,
tag_id_list
):
try
:
try
:
...
@@ -188,12 +194,9 @@ class Topic(models.Model):
...
@@ -188,12 +194,9 @@ class Topic(models.Model):
elif
self
.
content_level
==
'3'
:
elif
self
.
content_level
==
'3'
:
offline_score
+=
2.0
offline_score
+=
2.0
exposure_count
=
ActionSumAboutTopic
.
objects
.
using
(
settings
.
SLAVE_DB_NAME
)
.
filter
(
topic_id
=
self
.
id
,
exposure_count
=
ActionSumAboutTopic
.
objects
.
using
(
settings
.
SLAVE_DB_NAME
)
.
filter
(
topic_id
=
self
.
id
,
data_type
=
1
)
.
count
()
data_type
=
1
)
.
count
()
click_count
=
ActionSumAboutTopic
.
objects
.
using
(
settings
.
SLAVE_DB_NAME
)
.
filter
(
topic_id
=
self
.
id
,
data_type
=
2
)
.
count
()
click_count
=
ActionSumAboutTopic
.
objects
.
using
(
settings
.
SLAVE_DB_NAME
)
.
filter
(
topic_id
=
self
.
id
,
uv_num
=
ActionSumAboutTopic
.
objects
.
using
(
settings
.
SLAVE_DB_NAME
)
.
filter
(
topic_id
=
self
.
id
,
data_type
=
3
)
.
count
()
data_type
=
2
)
.
count
()
uv_num
=
ActionSumAboutTopic
.
objects
.
using
(
settings
.
SLAVE_DB_NAME
)
.
filter
(
topic_id
=
self
.
id
,
data_type
=
3
)
.
count
()
if
exposure_count
>
0
:
if
exposure_count
>
0
:
offline_score
+=
click_count
/
exposure_count
offline_score
+=
click_count
/
exposure_count
...
@@ -224,8 +227,7 @@ class TopicComplaint(models.Model):
...
@@ -224,8 +227,7 @@ class TopicComplaint(models.Model):
id
=
models
.
IntegerField
(
verbose_name
=
'日记图片ID'
,
primary_key
=
True
)
id
=
models
.
IntegerField
(
verbose_name
=
'日记图片ID'
,
primary_key
=
True
)
user_id
=
models
.
BigIntegerField
(
verbose_name
=
u'用户ID'
,
db_index
=
True
)
user_id
=
models
.
BigIntegerField
(
verbose_name
=
u'用户ID'
,
db_index
=
True
)
topic
=
models
.
ForeignKey
(
topic
=
models
.
ForeignKey
(
Topic
,
verbose_name
=
u"关联的帖子"
,
null
=
True
,
blank
=
True
,
default
=
None
,
on_delete
=
models
.
CASCADE
,
Topic
,
verbose_name
=
u"关联的帖子"
,
null
=
True
,
blank
=
True
,
default
=
None
,
on_delete
=
models
.
CASCADE
,
related_name
=
'complaints'
)
related_name
=
'complaints'
)
is_online
=
models
.
BooleanField
(
verbose_name
=
u"是否有效"
,
default
=
True
)
is_online
=
models
.
BooleanField
(
verbose_name
=
u"是否有效"
,
default
=
True
)
...
@@ -244,3 +246,15 @@ class PictorialTopic(models.Model):
...
@@ -244,3 +246,15 @@ class PictorialTopic(models.Model):
is_online
=
models
.
BooleanField
(
verbose_name
=
u"是否有效"
,
default
=
True
)
is_online
=
models
.
BooleanField
(
verbose_name
=
u"是否有效"
,
default
=
True
)
is_online
=
models
.
BooleanField
(
verbose_name
=
u'是否上线'
)
is_online
=
models
.
BooleanField
(
verbose_name
=
u'是否上线'
)
is_deleted
=
models
.
BooleanField
(
verbose_name
=
u'是否删除'
)
is_deleted
=
models
.
BooleanField
(
verbose_name
=
u'是否删除'
)
class
TopicExtra
(
BaseModel
):
"""帖子相关额外信息"""
class
Meta
:
verbose_name
=
'帖子额外信息'
app_label
=
'community'
db_table
=
'topic_extra'
topic_id
=
models
.
IntegerField
(
verbose_name
=
u"帖子ID"
,
db_index
=
True
)
virtual_vote_num
=
models
.
IntegerField
(
verbose_name
=
"帖子虚拟点赞"
)
trans2es/models/user.py
View file @
3665c234
...
@@ -34,6 +34,16 @@ class User(models.Model):
...
@@ -34,6 +34,16 @@ class User(models.Model):
create_time
=
models
.
DateTimeField
(
verbose_name
=
u'创建时间'
,
default
=
datetime
.
datetime
.
fromtimestamp
(
0
))
create_time
=
models
.
DateTimeField
(
verbose_name
=
u'创建时间'
,
default
=
datetime
.
datetime
.
fromtimestamp
(
0
))
update_time
=
models
.
DateTimeField
(
verbose_name
=
u'更新时间'
,
default
=
datetime
.
datetime
.
fromtimestamp
(
0
))
update_time
=
models
.
DateTimeField
(
verbose_name
=
u'更新时间'
,
default
=
datetime
.
datetime
.
fromtimestamp
(
0
))
@classmethod
def
get_user_nick_name
(
cls
,
user_id
):
try
:
nick_name
=
User
.
objects
.
using
(
settings
.
SLAVE_DB_NAME
)
.
filter
(
user_id
=
user_id
)
.
values_list
(
"nick_name"
)
.
first
()
return
nick_name
[
0
]
except
:
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
return
""
def
get_is_recommend_flag
(
self
):
def
get_is_recommend_flag
(
self
):
is_shadow
=
False
is_shadow
=
False
is_recommend
=
False
is_recommend
=
False
...
...
trans2es/models/user_extra.py
View file @
3665c234
...
@@ -15,7 +15,8 @@ class UserExtra(models.Model):
...
@@ -15,7 +15,8 @@ class UserExtra(models.Model):
db_table
=
"user_extra"
db_table
=
"user_extra"
id
=
models
.
IntegerField
(
verbose_name
=
"主键ID"
,
primary_key
=
True
)
id
=
models
.
IntegerField
(
verbose_name
=
"主键ID"
,
primary_key
=
True
)
user_id
=
models
.
BigIntegerField
(
verbose_name
=
u"用户ID"
)
user_id
=
models
.
CharField
(
verbose_name
=
u"用户ID"
,
max_length
=
100
)
is_shadow
=
models
.
BooleanField
(
verbose_name
=
u"是否是马甲账户"
)
is_shadow
=
models
.
BooleanField
(
verbose_name
=
u"是否是马甲账户"
)
is_online
=
models
.
BooleanField
(
verbose_name
=
u"是否上线"
)
is_online
=
models
.
BooleanField
(
verbose_name
=
u"是否上线"
)
is_recommend
=
models
.
BooleanField
(
verbose_name
=
u"是否推荐"
)
is_recommend
=
models
.
BooleanField
(
verbose_name
=
u"是否推荐"
)
...
...
trans2es/type_info.py
View file @
3665c234
...
@@ -81,6 +81,9 @@ class TypeInfo(object):
...
@@ -81,6 +81,9 @@ class TypeInfo(object):
def
bulk_get_data
(
self
,
instance_iterable
):
def
bulk_get_data
(
self
,
instance_iterable
):
data_list
=
[]
data_list
=
[]
# 4,5星帖子单独索引
topic_data_high_star_list
=
list
()
if
self
.
batch_get_data_func
:
if
self
.
batch_get_data_func
:
_pk_list
=
[
getattr
(
instance
,
'pk'
,
None
)
for
instance
in
instance_iterable
]
_pk_list
=
[
getattr
(
instance
,
'pk'
,
None
)
for
instance
in
instance_iterable
]
not_found_pk_list
=
[]
not_found_pk_list
=
[]
...
@@ -137,7 +140,10 @@ class TypeInfo(object):
...
@@ -137,7 +140,10 @@ class TypeInfo(object):
))
))
else
:
else
:
data_list
.
append
(
data
)
data_list
.
append
(
data
)
return
data_list
if
self
.
type
==
"topic"
and
instance
.
content_level
and
int
(
instance
.
content_level
)
>=
4
:
topic_data_high_star_list
.
append
(
data
)
return
(
data_list
,
topic_data_high_star_list
)
def
elasticsearch_bulk_insert_data
(
self
,
sub_index_name
,
data_list
,
es
=
None
):
def
elasticsearch_bulk_insert_data
(
self
,
sub_index_name
,
data_list
,
es
=
None
):
...
@@ -162,10 +168,10 @@ class TypeInfo(object):
...
@@ -162,10 +168,10 @@ class TypeInfo(object):
# traceback.print_exc()
# traceback.print_exc()
# es_result = 'error'
# es_result = 'error'
return
ESPerform
.
es_helpers_bulk
(
es
,
data_list
,
sub_index_name
,
True
)
return
ESPerform
.
es_helpers_bulk
(
es
,
data_list
,
sub_index_name
)
def
elasticsearch_bulk_insert
(
self
,
sub_index_name
,
instance_iterable
,
es
=
None
):
def
elasticsearch_bulk_insert
(
self
,
sub_index_name
,
instance_iterable
,
es
=
None
):
data_list
=
self
.
bulk_get_data
(
instance_iterable
)
data_list
,
topic_data_high_star_list
=
self
.
bulk_get_data
(
instance_iterable
)
return
self
.
elasticsearch_bulk_insert_data
(
return
self
.
elasticsearch_bulk_insert_data
(
sub_index_name
=
sub_index_name
,
sub_index_name
=
sub_index_name
,
data_list
=
data_list
,
data_list
=
data_list
,
...
@@ -188,7 +194,7 @@ class TypeInfo(object):
...
@@ -188,7 +194,7 @@ class TypeInfo(object):
time1
=
end
-
begin
time1
=
end
-
begin
begin
=
time
.
time
()
begin
=
time
.
time
()
data_list
=
self
.
bulk_get_data
(
instance_list
)
data_list
,
topic_data_high_star_list
=
self
.
bulk_get_data
(
instance_list
)
end
=
time
.
time
()
end
=
time
.
time
()
time2
=
end
-
begin
time2
=
end
-
begin
...
@@ -201,6 +207,14 @@ class TypeInfo(object):
...
@@ -201,6 +207,14 @@ class TypeInfo(object):
data_list
=
data_list
,
data_list
=
data_list
,
es
=
es
,
es
=
es
,
)
)
# 同时写4星及以上的帖子
if
len
(
topic_data_high_star_list
)
>
0
:
self
.
elasticsearch_bulk_insert_data
(
sub_index_name
=
"topic-high-star"
,
data_list
=
topic_data_high_star_list
,
es
=
es
,
)
end
=
time
.
time
()
end
=
time
.
time
()
time3
=
end
-
begin
time3
=
end
-
begin
logging
.
info
(
"duan add,insert_table_by_pk_list time cost:
%
ds,
%
ds,
%
ds,
%
ds"
%
(
time0
,
time1
,
time2
,
time3
))
logging
.
info
(
"duan add,insert_table_by_pk_list time cost:
%
ds,
%
ds,
%
ds,
%
ds"
%
(
time0
,
time1
,
time2
,
time3
))
...
@@ -215,7 +229,7 @@ class TypeInfo(object):
...
@@ -215,7 +229,7 @@ class TypeInfo(object):
stage_1_time
=
time
.
time
()
stage_1_time
=
time
.
time
()
data_list
=
self
.
bulk_get_data
(
instance_list
)
data_list
,
topic_data_high_star_list
=
self
.
bulk_get_data
(
instance_list
)
stage_2_time
=
time
.
time
()
stage_2_time
=
time
.
time
()
...
@@ -260,7 +274,26 @@ def get_type_info_map():
...
@@ -260,7 +274,26 @@ def get_type_info_map():
return
_get_type_info_map_result
return
_get_type_info_map_result
type_info_list
=
[
type_info_list
=
[
TypeInfo
(
name
=
'topic-star-routing'
,
type
=
'topic-star-routing'
,
model
=
topic
.
Topic
,
query_deferred
=
lambda
:
topic
.
Topic
.
objects
.
all
()
.
query
,
get_data_func
=
TopicTransfer
.
get_topic_data
,
bulk_insert_chunk_size
=
100
,
round_insert_chunk_size
=
5
,
round_insert_period
=
2
,
),
TypeInfo
(
name
=
'topic-high-star'
,
# >=4星日记
type
=
'topic-high-star'
,
model
=
topic
.
Topic
,
query_deferred
=
lambda
:
topic
.
Topic
.
objects
.
all
()
.
query
,
get_data_func
=
TopicTransfer
.
get_topic_data
,
bulk_insert_chunk_size
=
100
,
round_insert_chunk_size
=
5
,
round_insert_period
=
2
,
),
TypeInfo
(
TypeInfo
(
name
=
'topic'
,
# 日记
name
=
'topic'
,
# 日记
type
=
'topic'
,
type
=
'topic'
,
...
...
trans2es/utils/group_transfer.py
View file @
3665c234
...
@@ -33,7 +33,7 @@ class GroupTransfer(object):
...
@@ -33,7 +33,7 @@ class GroupTransfer(object):
update_time
=
instance
.
update_time
update_time
=
instance
.
update_time
tzlc_udpate_time
=
tzlc
(
update_time
)
tzlc_udpate_time
=
tzlc
(
update_time
)
res
[
"update_time"
]
=
tzlc_udpate_time
res
[
"update_time"
]
=
tzlc_udpate_time
#
res["high_quality_topic_num"] = instance.get_high_quality_topic_num()
res
[
"high_quality_topic_num"
]
=
instance
.
get_high_quality_topic_num
()
return
res
return
res
except
:
except
:
...
...
trans2es/utils/topic_transfer.py
View file @
3665c234
...
@@ -8,7 +8,7 @@ from libs.tools import tzlc
...
@@ -8,7 +8,7 @@ from libs.tools import tzlc
import
time
import
time
import
re
import
re
import
datetime
import
datetime
from
trans2es.models.user
import
User
class
TopicTransfer
(
object
):
class
TopicTransfer
(
object
):
...
@@ -27,12 +27,13 @@ class TopicTransfer(object):
...
@@ -27,12 +27,13 @@ class TopicTransfer(object):
res
[
"content"
]
=
instance
.
content
res
[
"content"
]
=
instance
.
content
res
[
"content_level"
]
=
instance
.
content_level
res
[
"content_level"
]
=
instance
.
content_level
res
[
"user_id"
]
=
instance
.
user_id
res
[
"user_id"
]
=
instance
.
user_id
res
[
"user_nick_name"
]
=
User
.
get_user_nick_name
(
instance
.
user_id
)
#
if instance.group:
if
instance
.
group
:
#
res["group_id"] = instance.group.id
res
[
"group_id"
]
=
instance
.
group
.
id
#
else:
else
:
#
res["group_id"] = -1
res
[
"group_id"
]
=
-
1
res
[
"share_num"
]
=
instance
.
share_num
res
[
"pictorial_id"
]
=
instance
.
get_pictorial_id
()
res
[
"pictorial_id"
]
=
instance
.
get_pictorial_id
()
...
@@ -82,6 +83,20 @@ class TopicTransfer(object):
...
@@ -82,6 +83,20 @@ class TopicTransfer(object):
# else:
# else:
# res["language_type"] = instance.language_type
# res["language_type"] = instance.language_type
res
[
"is_shadow"
]
=
instance
.
is_shadow
res
[
"is_recommend"
]
=
True
if
instance
.
is_recommend
else
False
res
[
"is_complaint"
]
=
instance
.
is_complaint
res
[
"virtual_content_level"
]
=
instance
.
virtual_content_level
res
[
"like_num_crawl"
]
=
instance
.
like_num_crawl
res
[
"comment_num_crawl"
]
=
instance
.
comment_num_crawl
res
[
"is_crawl"
]
=
instance
.
is_crawl
res
[
"platform"
]
=
instance
.
platform
res
[
"platform_id"
]
=
instance
.
platform_id
res
[
"drop_score"
]
=
instance
.
drop_score
res
[
"sort_score"
]
=
instance
.
sort_score
create_time
=
instance
.
create_time
create_time
=
instance
.
create_time
tzlc_create_time
=
tzlc
(
create_time
)
tzlc_create_time
=
tzlc
(
create_time
)
...
@@ -91,9 +106,11 @@ class TopicTransfer(object):
...
@@ -91,9 +106,11 @@ class TopicTransfer(object):
update_time
=
instance
.
update_time
update_time
=
instance
.
update_time
tzlc_update_time
=
tzlc
(
update_time
)
tzlc_update_time
=
tzlc
(
update_time
)
#
res["update_time"] = tzlc_update_time
res
[
"update_time"
]
=
tzlc_update_time
res
[
"update_time_val"
]
=
int
(
time
.
mktime
(
tzlc_update_time
.
timetuple
()))
res
[
"update_time_val"
]
=
int
(
time
.
mktime
(
tzlc_update_time
.
timetuple
()))
res
[
"total_vote_num"
]
=
instance
.
get_virtual_vote_num
()
+
instance
.
vote_num
logging
.
info
(
"test topic transfer time cost,time0:
%
d,time1:
%
d,time2:
%
d,time3:
%
d,time4:
%
d"
%
(
time0
,
time1
,
time2
,
time3
,
time4
))
logging
.
info
(
"test topic transfer time cost,time0:
%
d,time1:
%
d,time2:
%
d,time3:
%
d,time4:
%
d"
%
(
time0
,
time1
,
time2
,
time3
,
time4
))
return
res
return
res
except
:
except
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment