2010-01-14 10 views
7

Rozważam/pracuję nad wdrożeniem wyszukiwarki różnych typów zawartości naszej firmy i próbuję objąć głowę Lucene (szczególnie smak .net).Czy dokumenty w Lucene muszą zawierać te same pola?

W tej chwili moim głównym pytaniem jest to, czy dokumenty, które mają być indeksowane, muszą zawierać te same pola.

Na przykład:

Dokument1:

  • tytułem: "Mam dokument, Baby"
  • Ciało: "Oto kilka ważnych rzeczy"
  • Latitude: 26,12224
  • Longtitude: -65.23124
  • Marka: Toshiba

Document2:

  • Tytuł: "inny dokument przeze mnie"
  • ciele: "Lorem ipsum i cały ten zgiełk"
  • Kategoria: Wyroby
  • Autor: Sir Schab

... i tak dalej

Odpowiedz

14

Nic w jednorodności sił luceńskich.

Jeśli wyszukujesz na polu o nazwie "fred", a nie wszystkie dokumenty mają "fred", to wyszukiwanie nie znajdzie fredless docs.

+3

Jesteś moim nowym bohaterem. – Matt

0

Jeśli chcesz indeksować na określonym polu, I g wszystkie dokumenty muszą mieć te same pola.

+0

Tak właśnie wyraziła się moja intuicja, ale nie udało mi się znaleźć niczego, co konkretnie stwierdziło w taki czy inny sposób. – Matt

0

Wszystko zależy od sposobu zindeksowania dokumentów w Lucene. Wszystkie Document s muszą zostać dodane do indeksu. Możesz użyć IndexWriter lub napisać własną klasę, aby to zrobić. Przed dodaniem dokumentu do indeksu powinieneś podzielić go na pary wartości nazw. Następnie możesz zapytać Lucene o te wartości nazwy, używając QueryParser. Na przykład następujące zapytanie zwróci wszystkie dokumenty z frazami "Jestem dokumentem, kochanie" w tytule i "Oto niektóre ważne rzeczy" w treści.

title:("I'm a document, baby") body:("Here are some important things") 

Po prostu pokazałem prosty przykład, ale można utworzyć bardziej zaawansowane zapytanie wyszukiwania na wiele różnych sposobów.

Klasy, o których wspomniałem pochodzą z java, ale .net powinny być podobne.