Im新的postgresql和PHP,但我期待实施全文搜索,并无法查询文本搜索的基本查询,我想打印结果在屏幕上,因为它会显示在postgres本身,帮助将是非常棒的。Postgresql文本搜索与PHP
谢谢。
Im新的postgresql和PHP,但我期待实施全文搜索,并无法查询文本搜索的基本查询,我想打印结果在屏幕上,因为它会显示在postgres本身,帮助将是非常棒的。Postgresql文本搜索与PHP
谢谢。
Theres很多的概念,你的问题,让我们通过它运行:
首先,你需要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脚本,你将不得不connect to 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>";
<?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>
LIKE/ILIKE不是全文搜索。 –
是的,我在编辑(woops)时遇到了保存。 –
嗨,创建表不适用于postgres 8.4,我得到一个语法错误在底部括号);我觉得很奇怪,因为我可以用相同的语法创建其他表。 –
固定。这只是一个额外的逗号。 –