Как выполнить метод поиска T9 в SQL? - PullRequest
3 голосов
/ 30 декабря 2011

Я новичок в базе данных sql, и в настоящее время я хотел бы создать базу данных, которая может выполнять метод поиска T9, но я не знаю, как это сделать. Кто-нибудь может направить меня в этом? Заранее спасибо

Ответы [ 3 ]

1 голос
/ 30 декабря 2011

Предполагая, что вы не слишком беспокоитесь об эффективности, и у вас есть таблица, содержащая весь словарь в этой форме: Словарь ([id], [hashed], [word])

Где [hashed] field - замена каждого символа его групповым символом (например, «a», «b», а «c» можно заменить на «A»)

предположим, что у нас есть хранимая функция 'hash'такой, что hash ([word]) = [hashed].

Тогда вы можете просто выполнить этот запрос: Select word from Dictionary where [hashed] like (hash(input)+'%')

0 голосов
/ 03 января 2012

В Android я использую GLOB для выполнения поиска T9, например GLOB '[ABC] [DEF] *'

db.rawQuery("SELECT _id, word, freq FROM dicttable WHERE word GLOB '"+searchWord+"*' ORDER BY freq DESC",
            null);

надеюсь, что это может помочь

0 голосов
/ 30 декабря 2011

Первое, что вы должны знать, это оператор LIKE для автозаполнения:

http://www.w3schools.com/sql/sql_like.asp

SQL-запрос - не лучший способ для запросов в стиле T9.

Существуют более эффективные структуры данных, которые поддерживают масштабируемое и надежное решение для такого рода проблем. (например, Trie: http://en.wikipedia.org/wiki/Trie)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...