Я создал индекс с полями (id, title, url, content) для хранения информации веб-страницы путем сканирования. Теперь я хочу искать этот индекс с несколькими запросами слов (также булевыми запросами), предлагать хорошие эффективные поисковые алгоритмы (некоторые примеры) и эффективный синтаксический анализ. Пожалуйста, помогитеэффективный логический поиск большого индекса с whoosh
ответ
Вы хотите найти только заголовок или содержание? Предполагая, что вы хотите разрешить частичный поиск по названию, которые возвращают URL и/или содержание, схема будет выглядеть так:
schema = Schema(id=ID(stored=True), title=NGRAM(minsize=2, maxsize=20,stored=True, sortable=ranking_col), url=STORED(), content=STORED())
Это прекрасно работает со стандартным Свистом поисковиком до ~ 1000000 названий. Для большего количества записей индекс ngram станет очень большим и медленным.
Кроме того, использование стоп-слов, чтобы уменьшить размер индекса:
stopwords = set(['of', 'by', 'the','in','for','a']) #words to be excluded from the index
def create_whoosh(self):
writer = ix.writer()
for t in documents:
words = [t for t in t.title.split(" ") if t not in stopwords] #remove stopwords
writer.add_document(title=" ".join(words), url=t.url, content=t.content)
writer.commit()
Искатель:
def lookup(self, terms):
with ix.searcher() as src:
query = QueryParser("term", ix.schema).parse(terms)
results = src.search(query, limit=30)
return [[r['url'],r['content']] for r in results]
Если поиск полных слов в названии и содержании предназначен, вы можете сделать:
schema = Schema(id=ID(stored=True), title=TEXT(stored=True), url=STORED(), content=TEXT(stored=True))
Это не будет работать для поиска подстроки, но может хорошо справиться с некоторыми миллионами документов (в зависимости от n размер содержимого)
Для индексирования ~ 10 миллионов документов вам нужно отдельно хранить содержимое в каком-то БД и искать только идентификатор с whoosh.
- 1. Сохранение индекса в Whoosh
- 2. Максимальный размер индекса Whoosh?
- 3. Эффективный поиск большого списка строк
- 4. Хейстак и размер индекса whoosh
- 5. Эффективный поиск большого списка URL-адресов
- 6. Полнотекстовый поиск: Whoosh Vs SOLR
- 7. Полнотекстовый поиск в App Engine с Whoosh
- 8. Django поиск с Whoosh, но без сена?
- 9. Нечеткая строка Поиск с Whoosh в Python
- 10. Python Whoosh AttributeError при обновлении индекса
- 11. python - сложный логический поиск слов в файлах
- 12. Логический поиск, игнорирующий слово
- 13. Настроить представление с Whoosh
- 14. Whoosh indexing
- 15. Логический поиск Javascript?
- 16. Эффективный поиск с содержит
- 17. поиск различных моделей в haystack whoosh
- 18. Whoosh NestedChildren поиск не возвращает все результаты
- 19. Эффективный поиск в строке и замена для большого файла
- 20. Поиск значения индекса индекса
- 21. Эффективный поиск в списке
- 22. эффективный поиск коллекции и создание индекса в mongodb
- 23. Поиск и анализ большого индекса XML из Tasker
- 24. MySQL Полный текстовый логический поиск с тегами
- 25. MySQL логический полнотекстовый поиск с подвыражениями
- 26. логический поиск текста в питоне
- 27. MongoDB текстовый поиск логический И
- 28. Логический квест - получить TableCell от одномерного индекса
- 29. Эффективно получить n случайных документов из индекса Whoosh
- 30. Python whoosh - получить все уникальные значения из поля индекса