Πρόσθετη λειτουργία μηχανών αναζήτησης

Η νέα συλλογική αναζήτηση πληροφοριών στο σύστημα "Βοήθεια" χρησιμοποιεί την έννοια των ειδών μηχανών αναζήτησης και των μηχανών αναζήτησης. Ένα είδος μηχανής είναι μια μεταμηχανή από την οποία μπορεί να δημιουργηθεί με παραμετροποίηση ένα αριθμός υπαρκτών μηχανών αναζήτησης.

Η συνεισφορά νέων μηχανών αναζήτησης γίνεται μέσω του σημείου επέκτασης org.eclipse.help.ui.searchEngine:

<extension point="org.eclipse.help.ui.searchEngine">
	<engineType
		scopeFactory="com.example.xyz.XYZScopeFactory"
		label="XYZ Search"
		class="com.example.xyz.search.XYZSearch"
		icon="icons/etool16/xyzsearch.gif"
		pageClass="com.example.xyz.search.XYZSearchPage"
		id="com.example.xyz.XYZSearch">
		<description>
			Instances of XYZ Search search the XYZ site.
		</description>
	</engineType>
Αυτό το σημείο επέκτασης χρησιμοποιείται για την προσθήκη συστατικών στοιχείων συμμετοχής στην αναζήτηση πληροφοριών. Κάθε μηχανή αναζήτησης μπορεί να ρυθμιστεί μεμονωμένα. Όταν αποδοθούν αρχικές τιμές στην αναζήτηση, κάθε μηχανή αναζήτησης εκτελείται ως εργασία παρασκηνίου και τα αποτελέσματα εμφανίζονται στη σειρά αμέσως στην προβολή βοήθειας κάτω από το ερώτημα.

Οι μηχανές αναζήτησης που ορίζονται εδώ δεν θα εμφανιστούν αυτόματα ως συστατικά στοιχεία συμμετοχής συλλογικής αναζήτησης μέχρι την ολοκλήρωση του δεσμού μηχανής προϊόντος, εκτός εάν το γνώρισμα productId δεν προσδιοριστεί. Ως προς τις μηχανές που το προσδιορίζουν, θα εμφανιστούν μόνο όσες έχουν δεσμό με συγκεκριμένο προϊόν όταν εκτελεστεί το προϊόν αυτό.

Οι μηχανές αναζήτησης μπορούν απλά να συνθέσουν ένα a URL και να παράσχουν μόνο μία επίσκεψη που περιέχει αυτό το URL ως href. Η προσθήκη των δημοφιλών μηχανών αναζήτησης για τα οποία η υποστήριξη API απαιτεί άδεια χρήσης γίνεται με τον τρόπο αυτό. Στην άλλη άκρη του φάσματος, οι μηχανές αναζήτησης μπορούν να επικοινωνήσουν με τον εξυπηρετητή και να λάβουν μεμονωμένες επισκέψεις με πληροφορίες όπως ετικέτα, href, σύντομη περιγραφή, βαθμολογία κλπ. Η τοπική μηχανή βοήθειας μπορεί να παράγει επισκέψεις με τον τρόπο αυτό.

Ανεξάρτητα από το μηχανισμό αναζήτησης, οι μηχανές μπορούν να παράσχουν διάφορες ρυθμίσεις εμβέλειας χρησιμοποιώντας τις σελίδες προτιμήσεων JFace. Οι σελίδες αυτές εμφανίζονται όταν η διασύνδεση "Ειδικές ρυθμίσεις" ακολουθείται από την προβολή "Βοήθεια". Επιπλέον των κεντρικών σελίδων προτιμήσεων που ορίζονται στη μηχανή, είναι δυνατή η προσθήκη πρόσθετων υποσελίδων προτιμήσεων για πιο προηγμένες ρυθμίσεις.

Οι ρυθμίσεις εμβέλειας φορτώνονται και αποθηκεύονται με τη χρήση των αντικειμένων IPreferenceStore. Οι ρυθμίσεις εμβέλειας για όλες τις μηχανές ομαδοποιούνται κάτω από ένα επώνυμο σύνολο εμβελειών. Κατά το πρώτο άνοιγμα, δημιουργείται το προεπιλεγμένο σύνολο εμβελειών ("Προεπιλεγμένο"), αλλά οι χρήστες μπορούν να καθορίσουν περισσότερα σύνολα εμβελειών με δυνατότητα εναλλαγής μεταξύ τους.

Εφόσον η υποστήριξη συλλογικής αναζήτησης είναι τμήμα της πρόσθετης λειτουργίας org.eclipse.help.base, χρειάζεται μια μέθοδος κατασκευής για τη δημιουργία αντικειμένων εμβέλειας αναζήτησης από τα δεδομένα στο χώρο αποθήκευσης προτιμήσεων. Απαιτείται από τους πελάτες που προσθέτουν σελίδες προτιμήσεων εμβέλειας να προσθέσουν ομοίως και μεθόδους κατασκευής εμβέλειας.

Οι μηχανές που ορίζονται στο σημείο επέκτασης δεν εμφανίζονται στο περιβάλλον χρήστη ως προεπιλογή. Αυτό που εμφανίζεται είναι μια υπαρκτή χρήση μιας μηχανής αναζήτησης που μπορεί να τροποποιηθεί μεμονωμένα. Τα προϊόντα μπορούν να προρυθμίσουν το σύστημα βοήθειας με έναν αριθμό χρήσεων των καταχωρημένων ειδών μηχανών, πιθανόν παραμετροποιημένων για λειτουργία με τον επιθυμητό τρόπο. Επιπρόσθετα, οι χρήστες μπορούν να προσθέσουν τις δικές τους χρήσεις των καταχωρημένων μηχανών και να τις ρυθμίσουν ανάλογα με τις επιλογές τους:

<engine
	enabled="true"
	engineTypeId="com.example.xyz.search.XYZSearch"
	id="com.example.xyz.XYZSearch"
	label="XYZ Search">
</engine>
<engine
	enabled="true"
	engineTypeId="org.eclipse.help.ui.web"
	id="org.eclipse.sdk.Eclipse"
	label="%search.Eclipse.label">
	<description>
		%search.Eclipse.desc
	</description>
	<param 
		name="url" 
		value="http://eclipse.org/search/search.cgi?q={expression}&ul=&ps=20&m=all">
	</param>
</engine>