Перевернутый индекс для регулярного выражения? Поисковая система регулярных выражений?

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

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

Может что-то похожее? Точно не знаю.
Вот описание моей идеи:

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

пример поиска: [^ ]*ell[^ ]* .*\.

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

это будет простое регулярное выражение, похожее на sed, возможно, немного javascripty. они все равно похожи (с основами)

Изменить: я встречал поисковик с регулярными выражениями, но он не то, что я спрашиваю. Меня интересует, можно ли его построить.

Правка 2: Может быть, инвертированный индекс, в котором есть биты слов и числа (и их длина) и т. д. определенной длины в моем регулярном выражении, я могу быстро отфильтровать все проиндексированные числа, которые имеют эту длину?

Если я объединим эти идеи, я только что понял, что может быть несколько поисков, но с сокращением источника данных, пока все, что останется, не будет соответствовать регулярному выражению? Например: ell.\*\\. будет искать все с e, затем все с l после a, затем все с другим l после el, а затем любое количество символов, за которыми следует ..


person question    schedule 12.09.2013    source источник
comment
Я сомневаюсь, что вы считаете, что поисковая система с регулярными выражениями обеспечивает заметную выгоду для пользователя. Обратите внимание, что интерфейсы общих запросов поисковых систем (также известные как «google») уже поддерживают наиболее полезные конструкции, а именно чередование и подстановочные знаки. ни классы символов, ни счетчики повторений не будут полезны в полнотекстовом поиске. Пригодятся несколько фиксированных шаблонов для сопоставления строк со специальной семантикой: числа, даты, валюты; дополнен шаблонами, соответствующими множествам и их интервалам. Эти случаи могут быть более подходящим образом обработаны расширениями языка запросов и несколькими специализированными индексами.   -  person collapsar    schedule 12.09.2013
comment
Что делать, если я ищу только часть слова? Это удобно, когда люди ищут что-то необычное или необычное. Иногда мне нужно точное соответствие чему-то, но Google и другие поисковые системы любят заменять похожие слова. Это два примера. Я, вероятно, придумаю еще несколько, если подумаю об этом больше.   -  person question    schedule 12.09.2013
comment
Вы, вероятно, правы в отношении поиска с использованием подстановочных знаков (я исправлен - Google, похоже, не поддерживает их. Тем не менее, все еще не может представить много контекстов за пределами частично известных составных частей, хотя фонетическое/графическое сходство может быть действительно полезным). Для точных совпадений заключите свой термин в кавычки.   -  person collapsar    schedule 12.09.2013
comment
Я имел в виду точные совпадения с подстановочными знаками. Да, сходство может быть полезным, но это может быть что-то вроде окружения \(word-I-want-to-be-similar'd\) или просто (word). Или `word`, так как ` используется нечасто.   -  person question    schedule 12.09.2013
comment
Существует документ, который исследует это под названием «Быстрый механизм индексации регулярных выражений» Юнгу Чо, Калифорнийский университет, Лос-Анджелес. Он доступен онлайн. Я не читал это, хотя, но, возможно, это стоит вашего времени.   -  person    schedule 24.02.2014