Я пытаюсь экспортировать словарь слов в sqlite, состоящий только из слов, которые начинаются с, содержат или заканчиваются определенными фильтрами.
Если один фильтр был 'ment' и его можно было найти где угоднов слове;это будет включать такие слова, как «момент», «упомянутый» и «реализованный».Если другой был «под» и мог быть только префиксом;это будет соответствовать таким словам, как «underachieve» и «undercharged», но не «грабить».
Я нашел несколько похожих вопросов вокруг - однако я не смог заставить их работать, или онипредназначены для полных версий SQL и содержат функции не в SQLite.В основном моя проблема в том, что это не просто «соответствует каждой подстроке» - здесь есть префиксы, суффиксы и фразы (в любом месте слова совпадают)
Уже опробовано:
* Выбор строк из таблицыкоторые содержат любое слово из длинного списка слов в другой таблице
* Поиск строки SQL Server для значений из другой таблицы
* SQL выбирает строки, где поле содержит слово изполя другой таблицы
* https://social.msdn.microsoft.com/Forums/sqlserver/en-US/b9bb1003-80f2-4e61-ad58-f6856666bf85/how-to-select-rows-that-contain-substrings-from-another-table?forum=transactsql
Моя база данных выглядит так:
dictionary_full
------------------
word
------------------
abacuses
abalone
afterthought
auctioneer
before
biologist
crafter
...
------------------
filters
------------------
name | type_id
------------------
after | 1
super | 1
tion | 2
ses | 3
logist | 3
...
type
------------------
name
------------------
prefix
phrase
suffix
Я могу выбрать все фразы из БД, используя этот запрос:
SELECT name FROM filters WHERE type_id = (SELECT ROWID FROM type WHERE name='phrase');
, однако я не смог успешно работать в решениях, которые янайденный.Он либо не даст результатов, либо дублирует результаты.
например
Дубликаты:
SELECT d.word FROM dictionary_full d
JOIN filters f ON instr(d.word, (
SELECT name FROM filters WHERE type_id = (SELECT ROWID FROM type WHERE name='phrase')
)) > 0
Ожидаемые результаты:
Сочетание всех слов, которые:
- начинать с префиксов 'after' / 'super'
- ИЛИ где-либо содержать фразу'tion '
- ИЛИ заканчивать суффиксом' ses '/' logist '
------------------
word
------------------
abacuses
afterthought
auctioneer
biologist