2013-08-06 5 views
2

Я использую Neo4j как базу данных. Я должен ежедневно хранить тысячи статей, и мне нужно предоставить функцию поиска, где я должен вернуть статьи, содержимое которых соответствует ключевым словам, введенным пользователями. Я проиндексировал содержимое каждой статьи и запросил по индексу, как показано нижеNeo4j - запрос с Lucene

val articles = article_content_index.query("article_content", search string) 

Это прекрасно работает. Но, это занимает много времени, когда строка поиска содержит общие слова типа «the», «a» и т. Д., Которые будут присутствовать в каждой статье.

Как решить эту проблему?

ответ

1

Вы можете настроить article_content_index как полнотекстовый индекс, см. http://docs.neo4j.org/chunked/stable/indexing-create-advanced.html. Чтобы переключиться на использование полнотекстового индекса, вам сначала нужно удалить индекс, а для первого использования IndexManager.forNodes(String, Map) необходимо правильно настроить индекс при создании.

+0

утра уже с использованием полнотекстового индекса ("article_content", некоторые (Карта ("поставщика "->" lucene "," type "->" fulltext "))) – yAsH

+0

рассмотрите спецификацию специального анализатора, который предотвращает присутствие таких слов, как 'the', 'a'. Документация Lucene должна давать некоторые подсказки. –

+0

В этом случае я не получаю никаких результатов, если строка поиска является просто «или» или «а»! – yAsH

2

Возможно, проблема с люценом.

Вы можете настроить свой собственный анализатор, который может уйти от этих частых (стоп-) слова:

http://docs.neo4j.org/chunked/stable/indexing-create-advanced.html http://lucene.apache.org/core/3_6_2/api/core/org/apache/lucene/analysis/Analyzer.html http://lucene.apache.org/core/3_6_2/api/core/org/apache/lucene/analysis/standard/StandardAnalyzer.html

Смежные вопросы