В текстовой базе данных каждое слово текста находится в одной строке, и имеет свой уникальный идентификатор, который определяет последовательность. БД статичен, текст не будет изменен, вставки или удаления не будут сделаны. Так что это выглядит так: < /p>
tableName = "text" < /p>
Id | Word
---------
1 | The
2 | texts
3 | articles
4 | and
5 | conversations
6 | are
7 | brief
8 | and
9 | appropriate
10 | for
11 | all
... | ...
< /code>
Теперь пользователь должен иметь возможность выполнять поиск KWIC (ключевое слово в контексте), результат должен быть, например, Когда пользователь ищет «разговоры», а контекст составляет 2 (то есть 2 слова слева и 2 слова справа), результат должен быть «статьи и разговоры - краткие». Если они ищут «и» в данном примере, и контекст снова 2, они должны получить оба «текстовых статей и разговоров», а «и» - это краткие и подходящие для ».SELECT * FROM text
WHERE Id
BETWEEN ((SELECT Id FROM text WHERE Word='conversations') - 2)
AND ((SELECT Id FROM text WHERE Word='conversations') + 2)
< /code>
Это работает нормально, но только если поисковое слово происходит только один раз в тексте. (Это имеет место с «разговорами».) Если поисковый термин происходит несколько раз в тексте (например, если «разговоры» в запросе заменяются «и»), он вылетает, вероятно, потому что результат внутренних выборов в этом случае не является одним идентификатором, а списком идентификаторов. Я был бы признателен, если бы кто -то мог дать мне совет о том, как справиться с несколькими случаями поискового термина. Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/797 ... t-database