В настоящее время я индексирую веб-страницу с помощью lucene Цель состоит в том, чтобы иметь возможность быстро определить, какая страница содержит определенное выражение (обычно 1, 2 или 3 слова), и какие другие слова (или группа из 1–3 из них) также присутствуют на странице. Это будет использоваться для создания / обогащения / изменения тезауруса (фиксированный словарь).
Судя по найденным мною статьям, проблема в том, чтобы найти н-граммов (или гальку).
В Lucene есть ShingleFilter , ShingleMatrixFilter и ShingleAnalyzerWrapper , которые кажутся связанными с этой задачей.
Из этой презентации я узнал, что Lucene также может искать термины, разделенные фиксированным числом слов (так называемые slops). Пример приведен здесь .
Однако я не совсем понимаю разницу между этими подходами? Являются ли они принципиально разными, или вам нужно выбрать производительность / размер индекса?
В чем разница между ShingleMatrixFilter и ShingleFilter?
Надеюсь, гуру Lucene НАЙДЕТ этот вопрос и ответит ;-) !