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

0

Скажем, у меня есть строка.

Затем у меня есть ряд уникальных токенов или ключевых слов, потенциально большое количество в базе данных.

Я хочу найти и выяснить, какая из этих строк базы данных находится внутри строки, которую я предоставляю (и получить идентификаторы из них).

Есть ли способ использовать запрос для поиска в предоставленной строке или его следует перенести в пространство приложения?

Я правильно понял, что это не "полный текстовый поиск"? Будет ли лучший способ вставить его в базу данных, чтобы сделать полнотекстовый поиск?

Теги:
search
full-text-search

1 ответ

0
Лучший ответ

посмотрите

  • position(token in LongString) функция для postgresql
  • instr (oken, LongString) для mysql.

Каждый возвращает позицию маркера в LongString. Когда это положение > 0, вы имеете совпадение.

PostgreSQL:

select st.string, tt.token 
  from tokentable as tt 
     , stringtable as st
 where position(tt.token in st.string) >0

MySQL

select st.string, tt.token 
  from tokentable as tt 
     , stringtable as st
 where instrr(tt.token ,st.string) >0

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

Почему это отмеченные mysql и postgresql?

  • 0
    Я хотел знать стратегию для них обоих. Будет ли эффективнее вставить строку в базу данных, а затем выполнить полнотекстовый поиск? Допустим, у вас есть строка, она содержит различные города, вы хотите узнать, какие города находятся в строке.
  • 1
    Если вы предварительно обработаете свои данные (определите все города и вставьте соответственно), ваша производительность вставки будет ниже. Если вы ищете строку для подстрок в БД, тогда ваш поиск будет медленнее. Вам придется решить, какой вариант использования должен быть быстрее.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню