ホームページ >バックエンド開発 >PHPチュートリアル >PhpでのSphinx全文検索の簡単な処理

PhpでのSphinx全文検索の簡単な処理

WBOY
WBOYオリジナル
2016-06-20 12:49:33971ブラウズ

全文検索に sphinx を使用するのは初めてです。あまり正しくない洞察がたくさんあるかもしれません。異なるアイデアがある場合は、それを提案することができます。

現在のバージョンの sphinx が中国語をサポートしているかどうかはわかりません。グループの友達に聞いたところ、全員がサポートしていないとのことでした。そこで、次の方法を使用しました。

1. 記事の処理。

記事テーブルがarticle_mainの場合

id
title
summary
content
time
1
测试的标题
测试的摘要
测试的内容
123123123

スフィンクスは中国語をサポートしていないため (本当ですか?ここで説明しましょう)

新しいテーブルarticle_unicodeを作成します

id
article_id
title
summary
content
time
1
1
23243 23123 12213
12312 12312 12345
12312 12312 12345 123123123

この新しいテーブルの構造は、article_main の内容と同じですが、中国語の utf-8 Unicode コードが格納されています。

このように、記事を追加するときに、入力されたタイトル、要約、コンテンツを utf-8 unicode コードに処理して、article_unicode テーブルに保存します。

スフィンクスを構成する場合は、article_unicode テーブルをソースとして使用します (http://my.oschina.net/ptk/blog/495435 を参照)

2. 使用されるクラスutf-8 unicode を処理するメソッドは次のとおりです:

http://git.oschina.net/ctk/laravel5_backend/blob/master/app/Libraries/Spliter.php

呼び出しメソッドは次のとおりです:

$titleSplited   = $spliterObject->utf8Split($data['title']);//文章标题$index['title']   = $titleSplited['words']; //这样得到的值就是文章标题的utf-8的unicode码了。

そしてテーブルに保存されます。

3. 検索するときは、まず検索語を Unicode コードに変換し、このコードを使用してスフィンクスを検索します。

$object = new \stdClass();$object->keyword = Request::input('keyword');$searchProcess = new Process();//这里其实就是把keyword转为unicode,我封装了一下。$keywordUnicode = $searchProcess->prepareKeyword($object->keyword);//然后通过sphinx搜索处理数据,最后拿到文章的id,即article_unicode表中的article_id$object->sphinxResult_ArticleIds = $searchProcess->sphinxSearch($keywordUnicode);//通过article_id再来做常规的查询。$articleList = (new SearchModel())->activeArticleInfoBySearch($object);

以上です。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。