PHPで書かれた機能面に優れた全文検査エンジン
機能面
あいまい検索・関数的な実装・緯度経度検索・テキスト学習・語幹解釈・カスタムトークン作成・BM25(Okapi BM25)ランキングアルゴリズム・真偽値検索・結果のハイライト
業界スタンダードなGFMと標準化をすすめるCommonMarkの拡張Markdownの仕様でParseしてくれる。
Flavor | Version |
---|---|
The original markdown.pl | -- |
CommonMark | 0.29 |
GitHub Flavored Markdown | 0.29 |
MathJaxはすでに有力な標準仕様(抜粋)
世界最大の数学論文データベース MathSciNet (Examples: 1, 2, 3) は MathJax を採用。
少なくとも数学研究の世界ではウェブでの数式表示に関して MathJax が標準になった
Project Euclid も MathJax を採用 (Project Euclid、オンライン上の"美しい数学"を後押し)。
有力な団体がインターネット上で標準的に使うために MathJax の開発にお金を出している。
MathOverflow (MathJaxを使った専門的な数学の質問掲示板) でも MathJax を使っている。
$$ \sqrt{ 2 } = 1.4142 \ldots $$
(検索スクリプト)
search_core.php -+
(検索DB作成:認証) +--- TNT_SEARCH ---> SQLite3
create.php ------+
(MDファイル編集:認証)
editor.php ----+
(閲覧用) +------+--[MathJax]-- Marked
viewer.php ----+
(条件付き認証)
$$ ~ $$
タグはエスケープして、MathJaxに投げる。$$ xxx $$
は、コードブロックのlang-mathクラスになる。$$ xxx $$
でsplitして配列に投げたものをxxx
にあたるので、<code class=lang-math></code>
の間に組み込みながら回し、<code class=lang-math> xxx </code>
を正規表現でマッチさせて、マッチしたところをsplitして$$ xxx $$
joinで戻す。 | (アクセス)
[/] V
|--- *.php <-------------------+
| | |
| V |
|----/libs/*{.js|.css} | file_get_contents();でInclude
| |
|----/md/ ---------------------+ ^
(Markdownファイル群) |
'/md/' . (?file=)IT/Linux/ssh.md --+
/md/
配下にファイルを配置。file_get_contents()
でIncludeしてviewer.php
に反映。auth.php (PHP:token == COOKIE: token )
|- login.php -> COOKIE: PHPSESSID -> SHA256 -> COOKIE: token
|- logout.php -> session_destroy()
filemap
テーブルを検索する際のSQL命令を改変 > TNTSearch.php
L411 - $query = "SELECT * FROM filemap WHERE id IN (".$docs->implode(', ').");";
L411 + $query = "SELECT * FROM filemap WHERE path NOT LIKE '%AUTH%' AND id IN (".$docs->implode(', ').");";
!empty(path)
だけ結果表示 & array_filter
で配列化したものをcount()
renderer.link = function (href, title, text) {
/* [Memo.md]() 記法 */
if (href == '') {
return '<a target=_blank'
+ ' href=https://md.eric-lightning.info/viewer.php?file='
+ text +'&prv=1>' + text + '</a>';
}
/* [メモ](::Memo.md) 記法 */
else if(href.startsWith('::')){
return '<a targe=_blank`
+ href=https://md.eric-lightning.info/viewer.php?file='
+ href.replace('::','') +'&prv=1>' + text + '</a>';
}
/* デフォルトで _blank pukiwikiをターゲットにする */
return `<a target="_blank" href="${href}">${text}` + '</a>';
}
https://md.eric-lightning.info
link.md
をIncludeしてBootstrapのdiv.col
に配置したら、いい感じになりました。/editor.php?file=../index.html
$dirchk = preg_match('/(\.\.\/|\.\.\\\\)/', $_GET['file']) ? "true" : "false";
if($dirchk == 'true') die();
mdless
にするか、w3m
か%:curl "https://md.eric-lightning.info/local-search.php?q=ssh"
"IT/Linux/ssh-keygen.md" "IT/Linux/disk_mount.md" "IT/Linux/ssh.md" %
%:curl "https://md.eric-lightning.info/download.php?file=IT/Linux/ssh.md" -> Makdown
...