У меня большой груз документов, текстовых файлов, которые я хочу найти для соответствующего контента. Я видел инструмент поиска, не могу вспомнить, где, который реализовал хороший метод, как я опишу в своем требовании ниже.Динамический поиск и отображение
Мое требование заключается в следующем:
- мне нужно оптимизированную функцию поиска: Я поставить эту функцию поиска со списком (один или несколько) частично полной (или полным) слов, разделенных пробелами.
- Функция затем находит все документы, содержащие слова, начинающиеся или равные первому слову, затем поиск найденных документов таким же образом, используя второе слово, и так далее, в конце которого он возвращает список, содержащий фактическое слова, найденные с документами (имя &), содержащее их, для полного списка слов.
- Документы должны содержать все слова в списке.
- Я хочу использовать эту функцию для поиска по типу, чтобы я мог отображать и обновлять результаты в древовидной структуре в реальном времени.
Возможный подход к решению я пришел с выглядит следующим образом: создать базу данных (скорее всего, с помощью MySQL) с тремя таблицами: «Документы», «Слова» и «Word_Docs».
- «Документы» будут иметь (idDoc, имя, местоположение) всех документов.
- «Слова» будут иметь (idWord, Word) и быть списком уникальных слов из всех документов (конкретное слово появляется только один раз).
- «Word_Docs» будет иметь (idWord, idDoc), и будет список уникальных идентификаторов комбинаций для каждого слова и документ представляется в.
Функция затем вызывается с содержанием в окне редактирования на каждое нажатие клавиши (кроме места):
- строка лексемы
- (здесь мои колеса вращаются немного): Я уверен, что один оператор SQL может быть построен, чтобы вернуть необходимый набор данных: (actual_words, DOC_NAME, doc_location); (Я не горячий номер с SQL), альтернативно последовательность вызовов для каждого токена и анализ не повторяющихся idDocs?
- этот набор данных (/ список/массив), затем возвращается
Затем отображается возвращаемый список-содержание:
например: вызывается: "сл STA треска" дисплеях:
sequence - start - code - Counting Sequences [file://docs/sample/con_seq.txt]
- stop - code - Counting Sequences [file://docs/sample/con_seq.txt]
sequential - statement - code - SQL intro [file://somewhere/sql_intro.doc]
(and-so-on)
Это оптимальный способ сделать это? Функция должна быть быстрой, или она должна быть вызвана только при ударе пробела? Должен ли он предлагать слово-завершение? (Получил слова в базе данных) По крайней мере, это предотвратило бы бесполезные вызовы функции для слов, которые не существуют. Если слово-завершение: как это будет реализовано?
(Может быть, SO может также использовать этот тип поиска решения для просмотра тегов (в верхнем правом углу главной страницы)?)
Теперь, по крайней мере, я знаю, что искать. Благодарю. – slashmais 2008-09-29 10:31:50