Поиск Solr при индексации - PullRequest
       14

Поиск Solr при индексации

0 голосов
/ 15 апреля 2011

У меня проблема с оптимизацией следующего кода psedo, любая помощь приветствуется

for every term 
open new index searcher
do search
if found 
skip and search for next term
else
add it to index
commit
close searcher

В приведенном выше коде при добавлении нового документа / термина в индекс я должен зафиксировать изменения, просто добавив новый документ (что я чувствую себя дорогостоящим) чтобы увидеть новые изменения, открывающие новый поисковик индекса в следующий раз.

Есть ли способ улучшить производительность.К вашему сведению: мне нужно проиндексировать 36 миллионов терминов.

Ответы [ 2 ]

1 голос
/ 15 апреля 2011

Вы можете создать HashSet, чтобы дублировать список терминов в памяти, а затем индексировать только эти термины.Псевдокод выглядит так:

set := new HashSet
for each term
  if set contains term
    skip to next iteration
  else
    add term to set
end
open index
for each term in set
  add term to index
end
close index
0 голосов
/ 18 апреля 2011

Я предлагаю вам просто создать второй индекс (либо в RAMDirectory, либо в FSDirectory во временном местоположении). Добавьте все те термины / документы, которые не были найдены, ко второму (временному) индексу и объедините два индекса в конце.

open index for searching
for every term
  open new index searcher
  do search
  if found 
    skip and search for next term
  else
    add it to the second index
end
close searcher
commit temp index
merge temp index into primary index 
commit primary index
...