Как я могу создать эффективную базу данных MySQL, которая автоматически выполняет запросы, такие как Google - PullRequest
3 голосов
/ 05 октября 2010

Я хотел бы получить некоторые идеи о том, как создать эффективную базу данных MySQL, которая может обрабатывать запросы автозаполнения с высоким трафиком, такие как новая функция автоматического обновления SERP от Google.

Ключом к этому является то, что я пытаюсь взять содержание моей книги и хочу проиндексировать текст таким образом, чтобы база данных запрашивала соответствующий текст в кратчайшие сроки.

Например:
Если бы я набрал текст: "как" , я бы по сути обыскал базу данных (всю книгу) и увидел бы в книге набор результатов для предложений, которые говорят:

"...that is as I was saying..."  
"as I intended..."  
"This is as good as it gets"  
...  

Но как только я наберу "k" и произойдет "ask" , результирующий набор изменится на (то есть):

"Ask your father..."  
"...I will ask you to do this."  
...  

Кроме того, я подумывал добавить слова-помощники, поэтому, если вы набираете «askew» , но в настоящее время написано только «ask» , база данных возьмите все слова, содержащие «спросить» , вы увидите вспомогательные слова, такие как «спрашивать», «спрашивать», «спрашивать», «спрашивать» .

Важно, что эта книга является книгой правил, поэтому у нее есть свой уникальный ключ для каждого правила. Таким образом, когда человек вводит слово или 2, все правила с этой комбинацией слов будут отображаться в наборе результатов.

Я готов провести любое исследование сверх того, какую именно помощь кто-либо решит оказать. Я в недоумении от того, какие ключевые слова я должен искать в такой теме - поэтому в дополнение к конкретным решениям, ключевые слова по этому типу структуры базы данных также будут оценены и полезны.

Я что-то читал о полнотекстовом поиске ? Может ли это быть решением или это недостаточно эффективно для моих целей?

Я уже знаю, как выполнять ajax-вызовы и автоматическое завершение ... это не та проблема, для которой я прошу решения. Что мне нужно, так это понять, как структурировать и проиндексировать базу данных таким образом, чтобы при написании сценария для анализа содержимого моей книги в текстовом формате и вставки токенов в базу данных впоследствии она была извлечена наиболее эффективным способом. Я ожидаю высокий уровень трафика в конечном итоге на сайте, поэтому минимизация накладных расходов имеет первостепенное значение.

В начальном состоянии я думал о чем-то вроде таблиц для каждой длины символа больше 1 ... таким образом, у меня были бы таблицы с именами "two_letters", "three_letters" и т. Д.

Одна примерная запись в базе данных «two_letter» может быть «as», и она имеет отношение «многие ко многим» с каждым правилом в книге, которое содержит «as» в ней ... таким образом:

"as", "125"   
"as", "2024"  
"as", "4"  

Конечно, чем меньше набор букв, тем больше будет база данных. Эта книга очень большая, поэтому мы говорим о миллионах записей здесь! По одному на каждую комбинацию из 2 букв и правила, с которым оно связано. ТО, делайте это снова с 3-буквенными комбинациями, пока не останется больше слов. Это только первоначальная попытка мозгового штурма и может быть ужасной идеей, но это моя первая мысль по этому поводу.

После запуска сценария база данных создаст таблицы и вставит записи по мере их поступления. Скорее всего, он будет читать содержимое много раз для каждой длины символов.

Я хочу, чтобы он также распознавал комбинации из нескольких слов, так же, как ключевая фраза в Google будет автоматически обновляться в поисковой выдаче. Таким образом, когда пользователь вводит "они идут" , вы можете найти:

"they are gone already..."  
"they are going to the movies later."  
"how they are gonna get there is..."  

По сути, я запрашиваю эту функцию автозаполнения в Google, но контент представляет собой книгу, а не проиндексированные веб-сайты в Интернете.

Я с нетерпением жду, чтобы услышать от некоторых гениев, которые получают то, о чем я здесь прошу, и чувствую, что должны произвести впечатление на некоторых людей! :)

Спасибо всем заранее.

Ответы [ 2 ]

1 голос
/ 05 октября 2010

Я должен рекомендовать Сфинкс . Это потрясающая поисковая система для данных, хранящихся в mysql (или других базах данных).

0 голосов
/ 31 января 2014

Я второй Сфинкс - думаю, Craigslist использует его

...