3030$ vars ['rootContentPath ' ] = ContentsDatabaseManager::GetRelatedRootFile ($ vars ['contentPath ' ]);
3131$ vars ['rootDirectory ' ] = substr (GetTopDirectory ($ vars ['rootContentPath ' ]), 1 );
3232
33-
3433// ContentsDatabaseManager::LoadRelatedMetadata($vars['rootContentPath']);
3534// $tag2path = array_key_exists('tag2path', ContentsDatabase::$metadata) ? ContentsDatabase::$metadata['tag2path'] : [];
3635// $path2tag = array_key_exists('path2tag', ContentsDatabase::$metadata) ? ContentsDatabase::$metadata['path2tag'] : [];
3736// ksort($tag2path);
3837
39-
4038// layerの再設定
4139$ out = UpdateLayerNameAndResetLocalization ($ vars ['contentPath ' ], $ vars ['layerName ' ], $ vars ['language ' ]);
4240$ vars ['layerName ' ] = $ out ['layerName ' ];
4341$ vars ['language ' ] = $ out ['language ' ];
44-
45-
46- $ indexFilePath = ContentsDatabaseManager::GetRelatedIndexFileName ($ contentPath );
47- SearchEngine \Index::Load ($ indexFilePath );
42+ $ layerSuffix = ContentsDatabaseManager::GetLayerSuffix ($ vars ['layerName ' ]);
4843
4944
5045$ parent = $ currentContent ->Parent ();
5954}
6055
6156// === 関連コンテンツの検索 =================================================
57+ $ titleTagSuggestions = [];
6258$ titleSuggestions = [];
6359
6460/**
6864 * ]
6965 */
7066$ tagSuggestions = [];
71-
7267$ countSuggestions = 0 ;
7368
69+
7470// "<title> <parent.title> で検索
7571// ただし, parent は rootではない
76- $ titleQuery = NotBlankText (
72+ $ title = NotBlankText (
7773 [$ currentContent ->title , ContentsDatabaseManager::GetContentPathInfo ($ currentContent ->path )['filename ' ]]
7874);
75+
76+ if (SearchEngine \Index::Load (
77+ CONTENTS_HOME_DIR . $ vars ['rootDirectory ' ] . '/.index.tagmap ' . $ layerSuffix
78+ )){
79+ $ suggestions = SearchEngine \Searcher::Search ($ title );
80+ foreach ($ suggestions as $ i => $ suggested ){
81+ if ($ suggested ['score ' ] < 0.8 || in_array ($ suggested ['id ' ], $ currentContent ->tags , true )){
82+ continue ;
83+ }
84+ $ titleTagSuggestions [] = ['tag ' => $ suggested ['id ' ], 'suggestions ' => []];
85+ }
86+ }
87+
88+ SearchEngine \Index::Load (ContentsDatabaseManager::GetRelatedIndexFileName ($ contentPath ));
89+
90+ $ titleQuery = $ title ;
7991if ($ parent !== false ){
8092 $ parentPathInfo = ContentsDatabaseManager::GetContentPathInfo ($ parent ->path );
8193 if ($ parentPathInfo ['filename ' ] != ROOT_FILE_NAME ){
82- $ titleQuery .= ' ' . NotBlankText ([$ parent ->title , $ parentPathInfo ['filename ' ]]);
94+ $ titleQuery = NotBlankText ([$ parent ->title , $ parentPathInfo ['filename ' ]]) . ' ' . $ titleQuery ;
8395 }
8496}
85- $ titleSuggestions = SelectSuggestions (
86- SearchEngine \Searcher::Search ($ titleQuery ), $ currentContent ->path , $ childPathList , 0.5
87- );
88- $ countSuggestions += count ($ titleSuggestions );
97+ if ($ title !== $ titleQuery || count ($ titleTagSuggestions ) <= 0 ){
98+ $ titleSuggestions = SelectSuggestions (
99+ SearchEngine \Searcher::Search ($ titleQuery ), $ currentContent ->path , $ childPathList , 0.5
100+ );
101+ $ countSuggestions += count ($ titleSuggestions );
102+ }
103+
104+ foreach ($ titleTagSuggestions as $ i => $ each ) {
105+ $ titleTagSuggestions [$ i ]['suggestions ' ] = SelectSuggestions (
106+ SearchEngine \Searcher::Search ($ each ['tag ' ]), $ currentContent ->path , $ childPathList
107+ );
108+ $ countSuggestions += count ($ titleTagSuggestions [$ i ]['suggestions ' ]);
109+ }
89110
90111// <tag1> <tag2> <tag3> ..."で検索
91112foreach ($ currentContent ->tags as $ tag ){
176197 $ body .= '</div> ' ;
177198}
178199
200+ foreach ($ titleTagSuggestions as $ each ){
201+ if (count ($ each ['suggestions ' ]) > 0 ){
202+ $ body .= '<h2>" ' . $ each ['tag ' ] . '"</h2><div class="section"> ' ;
203+ $ body .= CreateTagLine ($ each ['tag ' ], $ vars ['rootDirectory ' ], $ vars ['layerName ' ]);
204+ $ body .= CreateSuggestedContentList ($ each ['suggestions ' ]);
205+ $ body .= '</div> ' ;
206+ }
207+ }
208+
179209foreach ($ tagSuggestions as $ each ){
180- if (count ($ each ['suggestions ' ])){
210+ if (count ($ each ['suggestions ' ]) > 0 ){
181211 $ body .= '<h2>" ' . $ each ['tag ' ] . '"</h2><div class="section"> ' ;
182- $ body .= '<ul class="tagline" style="text-align: right;"><li><a href=" ' .
183- CreateTagMapHREF ([[$ each ['tag ' ]]], $ vars ['rootDirectory ' ], $ vars ['layerName ' ]) .
184- '"> ' . $ each ['tag ' ] . '</a></li></ul> ' ;
212+ $ body .= CreateTagLine ($ each ['tag ' ], $ vars ['rootDirectory ' ], $ vars ['layerName ' ]);
185213 $ body .= CreateSuggestedContentList ($ each ['suggestions ' ]);
186214 $ body .= '</div> ' ;
187215 }
@@ -299,4 +327,10 @@ function CreateSuggestedContentList($suggestions){
299327 }
300328 $ html .= '</ul> ' ;
301329 return $ html ;
330+ }
331+
332+ function CreateTagLine ($ tag , $ rootDirectory , $ layerName ){
333+ return '<ul class="tagline" style="text-align: right;"><li><a href=" ' .
334+ CreateTagMapHREF ([[$ tag ]], $ rootDirectory , $ layerName ) .
335+ '"> ' . $ tag . '</a></li></ul> ' ;
302336}
0 commit comments