Differences
This shows you the differences between the selected revision and the current version of the page.
ja:searching_index_for_japanese 2010/01/15 00:47 | ja:searching_index_for_japanese 2020/02/06 11:04 current | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== 日本語の検索インデックス ====== | ====== 日本語の検索インデックス ====== | ||
- | We cannot search by Japanese words (either Chinese) at the latest version of PunBB(1.3.4). | + | 最新のPunBB(1.3.4)では、日本語や中国語での検索ができない。これは、PunBBの内部でキーワードの検索インデックスが正しく作成されていないからである。(table:search_words) |
- | It is because that the latest version of PunBB does not create searching words (table:search_words) appropriately. | + | 検索キーワードは、'search_idx.php'スクリプト内で作成されており、BBCodeの排除や半角の記号などで区切ることによって複数の単語が抽出されているが、この方法では日本語の単語は抽出されない。日本語は文章中の単語を半角のスペースで区切ることがないからである。もし、正しく日本語の文章を区切ろうと思ったら、それなりの日本語辞書と高度な解析プログラムが必要になりそうである。 |
- | The searching words are split and created at search_idx.php, but no Japanese word is created. Because Japanese words in a sentence is not split by whitespaces or other chars. In order to split appropriate words, we need some large Japanese dictionary and a specific analytical program. It's not small work. | + | ====== 解決するには ====== |
+ | =====Yahoo Web APIを使う方法===== | ||
+ | Yahoo! Japanは、日本語形態素解析と呼ばれる、文章を品詞まで認識して単語に分解するツールを無償でWeb APIとして公開している。 | ||
- | ====== How to solve====== | + | [[http://developer.yahoo.co.jp/webapi/jlp/ma/v1/parse.html|Yahoo!Developers 日本語形態素解析]] |
- | =====Using Yahoo Web API===== | + | |
- | Yahoo! Japan provides a sophisticated Web API tool to split Japanese sentences into the words. That is a kind of language morphological analysis. | + | |
- | [[http://developer.yahoo.co.jp/webapi/jlp/ma/v1/parse.html|Yahoo!Developers Japanese language morphological analysis]] (in Japanese) | + | このツールを使ってPunBBの検索インデックスを作成できれば、日本語でフォーラム内の検索ができるようになる。 |
+ | **コードの修正: search_idx.php**\\ | ||
- | This Web API tool enables us to make appropriate words for searching index. | + | search_idx.phpの36行あたりに次のコードを挿入する。返り血は半角スペースで区切られた日本語の単語になる。 |
- | + | ||
- | **Modification of code: search_idx.php**\\ | + | |
- | Insert the following code around line36@search_idx.php to split Japanese sentences into appropriate words splited by a whitespace. | + | |
<code php> | <code php> | ||
Line 23: | Line 21: | ||
</code> | </code> | ||
- | **Additional code: search_idx.php**\\ | + | 漢字一文字でも意味があることがあるので、検索キーワードの最小数を1に変更する。 |
+ | <code php> | ||
+ | if (!defined('FORUM_SEARCH_MIN_WORD')) | ||
+ | define('FORUM_SEARCH_MIN_WORD', 1); | ||
+ | </code> | ||
- | The implementations are the following. | ||
- | -**YAHOO_API_CODE**: Set Yahoo API Code. You must obtain it from Yahoo. Each application is restricted to access for 50,000 times in 24 hours.) | + | **コードの追加: search_idx.php**\\ |
- | -function **has_japanese_chars**: Checking existence of Japanese charactters | + | |
- | -function **split_japanese_words**: Send request to Yahoo Web API with parameters. The filter is set to 9|10 to request 'noun' and 'verb' words. The words are extracted from XML data and are imploded. | + | 上で呼び出される関数の実装を、search_idx.phpの末尾に追加する。 |
+ | |||
+ | -**YAHOO_API_CODE**: Yahoo APIを利用するための必要なアプリケーションIDである。Yahooから無償で提供される。アプリケーションにつき24時間あたり50,000回のアクセスが可能とのことである。トピック数がそれに近い場合には注意。 | ||
+ | -function **has_japanese_chars**: 日本語が含まれるかどうかを判定する。 | ||
+ | -function **split_japanese_words**: Yahoo Web APIに文章とパラメータを送る。取得する単語のフィルターは名詞と動詞にしてある。結果はXMLデータで取得されるので、そこから抽出する。 | ||
<code php> | <code php> | ||
if (!defined('YAHOO_API_CODE')) | if (!defined('YAHOO_API_CODE')) | ||
- | define('YAHOO_API_CODE','_F3TRHexg64WGN7BkqBt03OePtRKDon8qrFE6wWnEY.R7OWqPXVkHxJsTokT_Ijfa5w-'); | + | define('YAHOO_API_CODE','_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-'); |
/* | /* | ||
Line 74: | Line 79: | ||
- | ===== Modification of SQL ===== | + | ===== SQLの修正 ===== |
- | See also this post in the forum. | + | SQLで全てを部分一致検索にするという方法 |
- | *http://punbb.informer.com/forums/post/119577/ | + | *https://punbb.informer.com/forums/post/119577/ |
- | + | ||