В словесных играх подобно Ruzzle или Letterpress, где пользователи должны построить слова из заданного набора букв:PostgreSQL и словесные игры
я держу мой словарь в виде простой таблицы SQL:
create table good_words (
word varchar(16) primary key
);
Поскольку продолжительность игры очень короткая, я не хочу, чтобы проверить все введенные слова, вызывая PHP скрипт, который будет выглядеть это слово вверх в good_words
таблицы.
Вместо этого я хотел бы загрузить все возможные слова одним вызовом PHP-скрипта до начала раунда - так как все буквы известны.
Мой вопрос: если есть хороший язык в SQLish, чтобы найти такие слова?
I.e. Я могу запустить более длинный сценарий один раз, чтобы добавить столбец в таблицу good_words
, которая будет иметь те же буквы, что и в столбце word
, но отсортирована в алфавитном порядке ... Но я все еще не могу придумать способ сопоставления для него, учитывая набор букв.
И выполнение соответствия слов внутри скрипта PHP (по сравнению с внутренней частью базы данных), вероятно, займет слишком много времени (из-за полосы пропускания: нужно будет извлекать каждую строку из базы данных в PHP-скрипт).
Любые предложения или идеи, пожалуйста?
Использование postgresql-8.4.13 с CentOS Linux 6.3.
UPDATE:
Других идей у меня есть:
- Создать постоянно работает скрипт (cronjob или демон), который будет автоматически дополняется таблицей SQL с доской скомпилированных букв и возможными словами - но по-прежнему чувствует себя как потеря полосы пропускания и процессора, я бы предпочел решить это в базе данных.
- Добавить целые столбцы
a
,b
, ...,z
и всякий раз, когда я хранюword
вgood_words
, храните там письма. Мне интересно, if it is possible to create an insert trigger in Pl/PgSQL?
A) это, вероятно, все еще будет * очень длинным списком слов, которые нужно скачать там, b), что дает техническому пользователю отличный способ обмануть. ;) – deceze
На самом деле нет: Ruzzle сообщает количество возможных слов в конце раундов, и это число редко превышает 300. Даже с предполагаемой длиной слова в 10 букв, которая была бы всего 3 килобайта - до gzipping. –
Можете ли вы загрузить CSV-дамп таблицы «good_words» где-нибудь, с чем можно поиграть? Или предоставить другой источник, пожалуйста? – vyegorov