なぜ検索エンジンが必要なのですか?データベースだけでは不十分ですか?小規模な Web サイトを作成するだけの場合は、データベースで十分です。ただし、中立的なアプリケーションや大規模なアプリケーションを作成する場合は、検索エンジンを使用する方が賢明な選択です。もちろん、小規模な Web サイトでも Solr を使用して関連性の高い検索結果を取得できます。
電子商取引 Web サイトの検索クエリ プログラムを作成していると想像してください。最も簡単なアイデアは、次のデータベース クエリ ステートメントです:
SELECT * FROM PRODUCTS WHERE LOWER(title) like LOWER('%$phrase%') OR LOWER(description) like LOWER('%$phrase%');
これは、タイトルや説明の語句をクエリするときに正常に機能します。しかし、現実は非常に複雑です。たとえば、Apple iPhone 4G ブラック 16GB (Apple 4G ネットワーク iPhone ブラック 16GB)。 「iPhone 16G」で検索しても結果がありません。この状況に対処するには、スペースを % に置き換えます。
$phrase = str_replace(' ', '%', $phrase);
「iPhone 16GB 4G」をクエリするとどうなるでしょうか?どうやら語順が変わってしまい正しく動作しないようです。語順を保持するために別のフィールドを追加すると思います。では、間違った言葉を書いてしまったらどうすればいいのでしょうか?同義語についてはどうですか?このような検索システムに適したソリューションを考え出すのは困難です。
この種の問題を解決するには、絶妙なアルゴリズムを設計することが重要ではありません。データベースに負荷をかけすぎるのは決して良いことではありません。拡張機能: データベースを拡張するには、いくつかの準備、コードの変更、構成、およびダウンタイムのメンテナンス時間が必要です。つまり、Solr のコストは非常に高くなります。 Solr は、この問題を解決するために特別に設計された、Apache Lucene をベースとしたエンタープライズ レベルの検索プラットフォームです。Solr は強力なソリューションであるため、すべての機能を利用できるわけではありません。この記事では、それらを 1 つずつリストしています。インストールと保存は非常に簡単です
まず、公式 Web サイトから最新バージョンをダウンロードします。 Solr は Java 言語で書かれたアプリケーションであり、実行するには Java ランタイム環境が必要です。
$ cd solr-4.1.0/example/ $ java -jar start.jar
約数秒で次の情報が表示されます:
2013-03-09 18:47:41.177:INFO:oejs.AbstractConnector:Started SocketConnector@0.0.0.0:8983Solr にはポート 8983 で動作する Web インターフェイスがあります。ブラウザを開いて http://localhost:8983/solr/ にアクセスします。左側のナビゲーション領域に「collection1」があります。 Solr では、コレクションはデータベース テーブルに似ており、データをクエリできます。コレクションをクリックし、そのサブメニュー「クエリ」を選択します。 最初のオプションは「Request-Handler (qt)」と呼ばれ、デフォルト値は「/select」です。リクエスト ハンドラーは、事前定義されたクエリのセットです。Solr 構成ファイルを見ると、次のような内容が表示されます。
$ vim solr-4.1.0/example/solr/collection1/conf/solrconfig.xml
<requestHandler name="/select" class="solr.SearchHandler"> <lst name="defaults"> <str name="echoParams">explicit</str> <int name="rows">10</int> <str name="df">text</str> </lst></requestHandler>2 番目のパラメーターは、最も関心のあるものです。デフォルト値「*:*」は、何かをクエリすることを意味します。「クエリを実行」をクリックすると、次のような結果が得られます:
<?xml version="1.0" encoding="UTF-8"?><response> <lst name="responseHeader"> <int name="status">0</int> <int name="QTime">1</int> <lst name="params"> <str name="indent">true</str> <str name="q">*:*</str> <str name="wt">xml</str> </lst> </lst> <result name="response" numFound="0" start="0" /></response>インデックス結果は空ですが、これは問題ではありません。サンプル データを挿入する必要があります。
$ cd solr-4.1.0/example/exampledocs/ $ java -jar post.jar monitor.xml SimplePostTool version 1.5 Posting files to base url http://localhost:8983/solr/update using content-type application/xml.. POSTing file monitor.xml1 files indexed. COMMITting Solr index changes to http://localhost:8983/solr/update..これでクエリ インターフェイスに戻ることができ、今度はドキュメントが返されます。 コレクションのデータ構造はスキーマファイルで定義されます。
$ vim solr-4.1.0/example/solr/collection1/conf/schema.xmlこのファイルにはたくさんのコメントが含まれており、その内容が簡単にわかります。スキーム ファイルを変更する場合は、「text」という名前のフィールドを削除しないでください (正当な理由がない場合)。このフィールドは他のフィールドやクエリ ステートメント (select、look などを含む) に関連付けられています。
$ grep text solr-4.1.0/example/solr/collection1/conf/schema.xml | grep copy <copyField source="cat" dest="text"/> <copyField source="name" dest="text"/> <copyField source="manu" dest="text"/> <copyField source="features" dest="text"/> <copyField source="includes" dest="text"/> <copyField source="title" dest="text"/> <copyField source="author" dest="text"/> <copyField source="description" dest="text"/> <copyField source="keywords" dest="text"/> <copyField source="content" dest="text"/> <copyField source="content_type" dest="text"/> <copyField source="resourcename" dest="text"/> <copyField source="url" dest="text"/>リレーショナル データベースを使用している場合、データが重複することは望ましくありません。 Solr はデータベースではないため、ほとんどのフィールドはテキスト フィールドとしても処理されます。これがデフォルトのリクエスト ハンドラーです。
PHP から Solr にアクセスするには、クライアントが必要です。 PECL からダウンロードすることをお勧めします。高速で、API が明確で、ドキュメントも優れています。ただし、この拡張機能は現在バージョン 1.0.2 であり、Solr 4.x をサポートしていないことに注意してください。 Solr 3.x と 4.x のプロトコルは若干異なります。ただし、心配しないでください。変更は行ったので、互換性のあるバージョンを https://github.com/lukaszkujawa/php-pecl-solr からダウンロードできます。しばらく使っていますが信頼できます。公式のものとは少し異なります。SolrClient コンストラクターには追加の Solr バージョン パラメーターがあります。このパッチは正式版としてリリースされるため、将来の互換性について心配する必要はありません。
$ git clone https://github.com/lukaszkujawa/php-pecl-solr.git$ cd php-pecl-solr/ $ phpize $ whereis php-config php-config: /usr/bin/php-config /usr/bin/X11/php-config $ ./configure --with-php-config=/usr/bin/php-config $ make $ make install
php.ini に追加します
extension=solr.so
Web サーバーを再起動します
$ /etc/init.d/apache2 restartこれで、インデックスにコンテンツを追加する php を作成できるようになります。
<?php $options = array ( 'hostname' => '127.0.0.1', ); $client = new SolrClient($options, "4.0"); // 参数4.0针对Solr4.x,其他版本时忽略 $doc = new SolrInputDocument(); $doc->addField('id', 100); $doc->addField('title', 'Hello Wolrd'); $doc->addField('description', 'Example Document'); $doc->addField('cat', 'Foo'); $doc->addField('cat', 'Bar'); $response = $client->addDocument($doc); $client->commit(); /* ------------------------------- */ $query = new SolrQuery(); $query->setQuery('hello'); $query->addField('id') ->addField('title') ->addField('description') ->addField('cat'); $queryResponse = $client->query($query); $response = $queryResponse->getResponse(); print_r( $response->response->docs );
複数のドキュメントを追加した場合、彼女は頻繁にコミットせずにそれをうまく処理できます。
Solr がどのように機能するかを知ることは貴重であり、多くのプロジェクトで使用できます。 1 回のリクエストで必要なデータをすべて取得できる優れた機能があります。もちろん、彼女をマスターするには時間がかかりますが、努力する価値はあります。 Solr には、活発なコミュニティと完全なドキュメント リソースがあり、プロジェクトでの使用がまだ心配な場合は、Solr 3 エンタープライズ検索サーバーを参照してください。これにより、検索サービスを迅速にセットアップできるだけでなく、データの基盤にもなります。採掘。
関連記事:
phpのsolr操作クラスとデモ

PHPでは、特性は方法が必要な状況に適していますが、継承には適していません。 1)特性により、クラスの多重化方法が複数の継承の複雑さを回避できます。 2)特性を使用する場合、メソッドの競合に注意を払う必要があります。メソッドの競合は、代替およびキーワードとして解決できます。 3)パフォーマンスを最適化し、コードメンテナビリティを改善するために、特性の過剰使用を避け、その単一の責任を維持する必要があります。

依存関係噴射コンテナ(DIC)は、PHPプロジェクトで使用するオブジェクト依存関係を管理および提供するツールです。 DICの主な利点には、次のものが含まれます。1。デカップリング、コンポーネントの独立したもの、およびコードの保守とテストが簡単です。 2。柔軟性、依存関係を交換または変更しやすい。 3.テスト可能性、単体テストのために模擬オブジェクトを注入するのに便利です。

SplfixedArrayは、PHPの固定サイズの配列であり、高性能と低いメモリの使用が必要なシナリオに適しています。 1)動的調整によって引き起こされるオーバーヘッドを回避するために、作成時にサイズを指定する必要があります。 2)C言語アレイに基づいて、メモリと高速アクセス速度を直接動作させます。 3)大規模なデータ処理とメモリに敏感な環境に適していますが、サイズが固定されているため、注意して使用する必要があります。

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。

JavaScriptでは、nullcoalescingoperator(??)およびnullcoalescingsignmentoperator(?? =)を使用できます。 1.??最初の非潜水金または非未定されたオペランドを返します。 2.??これらの演算子は、コードロジックを簡素化し、読みやすさとパフォーマンスを向上させます。

XSS攻撃を防ぎ、リソースのロードを制限し、ウェブサイトのセキュリティを改善できるため、CSPは重要です。 1.CSPはHTTP応答ヘッダーの一部であり、厳格なポリシーを通じて悪意のある行動を制限します。 2。基本的な使用法は、同じ起源からのロードリソースのみを許可することです。 3.高度な使用法は、特定のドメイン名がスクリプトやスタイルをロードできるようにするなど、より微調整された戦略を設定できます。 4。CSPポリシーをデバッグおよび最適化するには、コンテンツセキュリティポリシーレポートのみのヘッダーを使用します。

HTTPリクエストメソッドには、それぞれリソースを取得、送信、更新、削除するために使用されるGET、POST、PUT、および削除が含まれます。 1. GETメソッドは、リソースを取得するために使用され、読み取り操作に適しています。 2. POSTメソッドはデータの送信に使用され、新しいリソースを作成するためによく使用されます。 3. PUTメソッドは、リソースの更新に使用され、完全な更新に適しています。 4.削除メソッドは、リソースの削除に使用され、削除操作に適しています。

HTTPSは、HTTPに基づいてセキュリティレイヤーを追加するプロトコルであり、主に暗号化されたデータを介してユーザーのプライバシーとデータセキュリティを保護します。その作業原則には、TLSの握手、証明書の確認、暗号化された通信が含まれます。 HTTPSを実装する場合、証明書管理、パフォーマンスへの影響、および混合コンテンツの問題に注意を払う必要があります。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 中国語版
中国語版、とても使いやすい

ホットトピック



