Ниже приведено мое заявление о проблеме. Пожалуйста, дайте мне знать, как я могу достичь этого через Lucene 4.3.1. Я просмотрел разные запросы по умолчанию, но ничто, казалось, не соответствовало моему требованию. Если это невозможно в Lucene, есть ли другое программное обеспечение, которое может помочь мне в этом. Также обратите внимание, что у меня очень строгий поворот для этого, поэтому поиск нужно выполнить довольно быстро. Я смотрю около 10 миллисекунд при максимальномLucene поиск ключевых слов, встроенных в текст
У меня есть файл со списком имен (в формате - «имя», «второе имя», «фамилия»), может быть около 10K. Эти имена нужно индексировать, чтобы я мог выполнять поиск входящего запроса.
См., Например,
Список имен, которые будут индексироваться
- Первого M Последнего
- Первого MI Последнего
- Первого N Las
- и некоторых других названия
Случай 1: Ниже запрос должен возвращать First M Последний из индекса
- Здравствуйте, как вы делаете в первую очередь M Последняя сегодня
- Здравствуйте, как вы делаете последние первыми M сегодня
- Здравствуйте, как вы делаете Lst M Первый сегодня
Случай 2: Ниже запроса ничего не нужно возвращать. Обратите внимание, что имена имеют другой текст между ними.
- Здравствуйте, как вы doingFirst текст M некоторый текст Последний сегодня
Случай 3: я должен быть в состоянии сделать нечеткий поиск тоже. Ниже запроса следует вернуть First M Last из индекса.
- Здравствуйте, как вы делаете Ferst M Последний сегодня
- Здравствуйте, как вы делаете Последним Ferst M сегодня
- Здравствуйте, как вы делаете Последнее M Ferst сегодня
я сделал попробуйте использовать запрос близости, но поскольку вход очень случайный, я не могу его использовать.
У меня возникли проблемы с тем, что вопрос. Можете ли вы подчеркнуть, что вы пробовали и что не работает с тем, что вы пробовали? – dlamblin
Это похоже на очень обратный вариант использования.Несколько мыслей о реализации, чтобы убедиться, что используются только соседние элементы запроса, вам нужно либо выбрать соответствующий фрагмент запроса, либо, возможно, разделить его на [Shingles] (http: // lucene. apache.org/core/4_0_0/analyzers-common/org/apache/lucene/analysis/shingle/ShingleAnalyzerWrapper.html) (хотя я бы избегал использовать подобные черепицы, если у вас есть альтернатива). Если вы спрашиваете, есть ли у Lucene какой-то класс, который будет обрабатывать разбор запроса с помощью той логики, которую вы ищете, я бы подумал, что нет. – femtoRgon
Невозможно выбрать соответствующую часть запроса, так как вход может быть любым. Я смотрел на Шиллз, но они, похоже, не меняют порядок. И Да, похоже, что это не поддерживается из коробки. Единственное, о чем я мог подумать, это поставить все перестановки имен в индексе и найти точное совпадение. Это не кажется эффективным способом. Кроме того, это не сработает, если есть имя, которое состоит из десяти частей. В этом случае перестановка будет слишком дорогостоящей. – user2574133