KWIC в текстовой базе данныхMySql

Форум по Mysql
Ответить
Anonymous
 KWIC в текстовой базе данных

Сообщение Anonymous »

В текстовой базе данных каждое слово текста находится в одной строке, и имеет свой уникальный идентификатор, который определяет последовательность. БД статичен, текст не будет изменен, вставки или удаления не будут сделаны. Так что это выглядит так: < /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>
Это работает нормально, но только если поисковое слово происходит только один раз в тексте. (Это имеет место с «разговорами».) Если поисковый термин происходит несколько раз в тексте (например, если «разговоры» в запросе заменяются «и»), он вылетает, вероятно, потому что результат внутренних выборов в этом случае не является одним идентификатором, а списком идентификаторов. Я был бы признателен, если бы кто -то мог дать мне совет о том, как справиться с несколькими случаями поискового термина. Спасибо! Я попробовал это вместе с функцией concat, и запрос теперь выглядит так: < /p>
SELECT Word, temp FROM
(SELECT Word, CONCAT (
LAG(Word, 1) OVER (ORDER BY Id),
' ', Word, '[/b] ',
LEAD(Word, 1) OVER (ORDER BY Id))
AS temp FROM text) t
WHERE Word='and';
теперь дает результаты «articels и разговоры» и «Краткое и соответствующие», как и ожидалось. Кроме того, поисковое слово («и») может быть выделено жирным шрифтом, что является отличным побочным продуктом. 10 или макс. 20. Это число должно быть определена пользователем в окончательном приложении. Есть ли способ, как это может быть достигнуто?

Подробнее здесь: https://stackoverflow.com/questions/797 ... t-database
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»