1

Postgresql と php は初めてですが、全文検索を実装しようとしていて、テキスト検索の基本的なクエリをクエリするのに問題があります。postgres 自体に表示されるように、結果を画面に出力したいと思います。助けてください。 .

ありがとうございました。

4

2 に答える 2

5

あなたの質問には多くの概念があります。それを実行してみましょう:

最初にCREATE TABLEが必要です:

CREATE TABLE person (
  id SERIAL PRIMARY KEY,
  fullname TEXT NOT NULL,
  dob DATE,
  bio TEXT NOT NULL
);

いくつかのテスト データを挿入します。

INSERT INTO person (fullname, dob, bio) VALUES
('Steve Jobs', '1955-02-24', 'Steven Paul "Steve" Jobs...'),
('Tutankhamun', NULL, 'Tutankhamun (alternately spelled...');

検索を高速化するには、検索対象の列に全文索引を作成する必要があります。

CREATE INDEX person_fts ON person USING gin(to_tsvector('english', bio));

PHP スクリプトでは、PostgreSQL に接続する必要があります。

$dbconn = pg_connect("dbname=mary");

pg_query()で全文検索ができるようになりました:

$words = "steve jobs";
$sql = "SELECT * FROM person WHERE to_tsvector(bio) @@ to_tsquery('$words')";
$query = pg_query($dbconn, $sql);
if(!$query)
  die("An error occured.\n");

psql で表示されるようにすべてを返したい場合は、レコードをTABLEにレンダリングします。

echo "<table>";
while($row = pg_fetch_row($result)) {
  echo "<tr>";
  foreach($row as $cell)
    echo "<td>{$cell}</td>";
  echo "</tr>";
}
echo "</table>";
于 2012-07-03T13:17:51.680 に答える
0
<?php
$conn = pg_connect('host=localhost port=5432 dbname=test user=lamb password=bar');

$search = 'some words';

$result = pg_query($conn, "SELECT id, text FROM some_table WHERE text ILIKE '%$search%'");
?>

<table>
  <tr>
    <th>ID</th>
    <th>Text</th>
  </tr>
  <?php foreach($array = pg_fetch_all_columns($result) as $value): ?>
  <tr>
    <td><?php echo $value[0]; ?></td>
    <td><?php echo $value[1]; ?></td>
  </tr>
  <?php endforeach; ?>
</table>
于 2013-10-22T21:38:40.677 に答える