<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>enterprise search &#8211; Smals Research</title>
	<atom:link href="https://www.smalsresearch.be/tag/enterprise-search/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.smalsresearch.be</link>
	<description></description>
	<lastBuildDate>Mon, 04 May 2026 09:51:08 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://www.smalsresearch.be/wp-content/uploads/2026/01/cropped-cropped-Smals_Research-32x32.png</url>
	<title>enterprise search &#8211; Smals Research</title>
	<link>https://www.smalsresearch.be</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Cognitive Search: l&#8217;évolution des moteurs de recherche d&#8217;entreprise</title>
		<link>https://www.smalsresearch.be/cognitive-search-levolution-des-moteurs-de-recherche-dentreprise/</link>
		
		<dc:creator><![CDATA[Katy Fokou]]></dc:creator>
		<pubDate>Mon, 11 Mar 2019 14:30:25 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[enterprise search]]></category>
		<category><![CDATA[Information management]]></category>
		<guid isPermaLink="false">/?p=12761</guid>

					<description><![CDATA[«&#160;Data is the New Gold&#160;»&#160;: voici une citation que l’on a maintes fois vue et entendue quand il s’agit de parler de science des données ou d’intelligence artificielle. Ce blog se concentre sur les données non structurées et textuelles et une des nouvelles techniques qui permettent d’extraire «&#160;l’or&#160;» contenu dans celles-ci. Les entreprises et organisations [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">«&nbsp;Data is the New Gold&nbsp;»&nbsp;: voici une citation que l’on a maintes fois vue et entendue quand il s’agit de parler de science des données ou d’intelligence artificielle. Ce blog se concentre sur les données non structurées et textuelles et une des nouvelles techniques qui permettent d’extraire «&nbsp;l’or&nbsp;» contenu dans celles-ci. </p>



<p class="wp-block-paragraph">Les entreprises et organisations disposent en effet d’une grande quantité de données structurées et non structurées, souvent sous forme de textes. Pour exploiter au mieux l’information contenue dans ses données, elles utilisent des systèmes de recherche (<a href="https://en.wikipedia.org/wiki/Enterprise_search">Enterprise Search</a>) pour retrouver rapidement l’information utile et pertinente. L’<em>enterprise search </em>désigne un système similaire au <em>web search</em> visant à faciliter la recherche d’information. Les données provenant de sources telles que les emails, l’intranet, les systèmes de gestion documentaires et les bases de données sont rassemblées et indexées tel qu’il soit aisé de naviguer et de retrouver du contenu. Ce système permet aussi de gérer la sécurité et les accès à l’information. Compte tenu du volume et de la complexité des données générées, il est parfois difficile et long d’accéder à l’information pertinente. En effet selon la façon dont la requête est effectuée, les moteurs de recherche retournent une liste plus ou moins longue de résultats que l’utilisateur doit passer en revue un par un pour retrouver l’information désirée. </p>



<p class="wp-block-paragraph">La solution décrite ici se focalise sur l’implémentation d’un outil de recherche rapide type «&nbsp;web&nbsp;» et n’inclut pas la construction de <a href="https://en.wikipedia.org/wiki/Thesaurus_(information_retrieval)">thésaurus</a>; les thésaurus apportent précision et spécificité mais ils requièrent des moyens et un effort manuel considérables. </p>



<figure class="wp-block-image"><img fetchpriority="high" decoding="async" width="784" height="481" src="/wp-content/uploads/2019/03/cogntivesearch-forrester.png" alt="" class="wp-image-12762" srcset="https://www.smalsresearch.be/wp-content/uploads/2019/03/cogntivesearch-forrester.png 784w, https://www.smalsresearch.be/wp-content/uploads/2019/03/cogntivesearch-forrester-300x184.png 300w, https://www.smalsresearch.be/wp-content/uploads/2019/03/cogntivesearch-forrester-768x471.png 768w" sizes="(max-width: 784px) 100vw, 784px" /><figcaption class="wp-element-caption">Extrait de &#8220;The Forrester Wave<sup>TM</sup>: cognitive Search And Knowledge Discovery Solutions, Q2 2017&#8243;</figcaption></figure>



<p class="wp-block-paragraph">Une nouvelle approche du <em>enterprise search</em> dite <em>cognitive search</em>, a été développée dans l’optique d’exploiter au mieux les données contenues dans les documents de l’entreprise et de proposer des résultats plus ciblés&nbsp;; le <em>cognitive search</em> permet d’aller plus loin en intégrant le traitement automatique du langage naturel (<a href="https://fr.wikipedia.org/wiki/Traitement_automatique_du_langage_naturel">NLP</a>) et l’intelligence artificielle. Ces techniques sont utilisées pour enrichir l’information, elles permettent au système d&#8217;interpréter la requête et de proposer un résultat ciblé et pertinent. Cette approche est dite cognitive car elle tient compte du contexte et des préférences de l’utilisateur pour la recherche et s’améliore avec l’utilisation. On peut la caractériser par les points suivants&nbsp;:</p>



<ul class="wp-block-list">
<li>Capacité d’intégrer les données ayant différents formats et provenant d’une multitude de sources externes et internes telles que les bases de données RDBMS/NO SQL, Sharepoint, les emails, …</li>



<li>Possibilité d’enrichir les données grâce à l’utilisation du NLP et de l’apprentissage automatique. En appliquant des techniques telles que l’extraction d’entités et de concepts, la classification, l’extraction des relations entre entités et la détection de thèmes (topic detection),</li>



<li>Personnalisation et contextualisation de l’information en combinant entre autre le moteur de recherche à une base de connaissance graphe (<a href="https://fr.wikipedia.org/wiki/Knowledge_Graph">Knowledge Graph</a>),</li>



<li>Adaptabilité à l’utilisateur en utilisant par exemple les systèmes de recommandations qui proposent des résultats basés sur les précédentes requêtes d’utilisateurs,</li>



<li>Capacité de s’améliorer au cours du temps c.-à-d. améliorer la pertinence des résultats.</li>
</ul>



<figure class="wp-block-image"><img decoding="async" width="624" height="351" src="/wp-content/uploads/2019/03/cognitive-search-azure-1.png" alt="" class="wp-image-12767" srcset="https://www.smalsresearch.be/wp-content/uploads/2019/03/cognitive-search-azure-1.png 624w, https://www.smalsresearch.be/wp-content/uploads/2019/03/cognitive-search-azure-1-300x169.png 300w" sizes="(max-width: 624px) 100vw, 624px" /><figcaption class="wp-element-caption">Azure cognitive search de Microsoft combine le service Azure search avec des outils tels que Text analytics et Computer vision</figcaption></figure>



<p class="wp-block-paragraph">Cette technologie présente un avantage particulier pour le secteur public qui génère une énorme masse de documents, répartis dans plusieurs bases de données sous différents formats. Les utilisateurs doivent pouvoir analyser et traiter des documents de manière rapide et efficace, en tenant compte des règles d’application dans leur domaine. Ces règles sont stockées dans des bases de connaissances mais changent régulièrement en fonction des politiques gouvernementales. Il est donc important pour assurer le traitement correct et équitable des dossiers que ces bases de données soient à jour et faciles à consulter. L’autre avantage qu&#8217;apporterait un système de recherche dit cognitif est qu’il tient compte du contexte et donne un résultat ciblé, on pourrait donc changer de paradigme&nbsp;; l’utilisateur ne doit plus chercher activement un document dans la base de données mais en fonction du contexte et du processus (business process) dans lequel il évolue, les documents/ l’information lui sont suggérés.&nbsp; En outre un système, rapide et spécifique, pourrait facilement s’intégrer avec des applications qui exécutent des requêtes tels que les chatbots, voire des applications mobiles. Une base de connaissance graphe (knowledge graph) associée au <em>cognitive search</em> permettrait aussi de mettre en évidence la connaissance «&nbsp;cachée&nbsp;» c.-à-d. découvrir des liens entre entités, des régularités ou des anomalies. Le <em>cognitive search</em> ne serait donc pas seulement utilisé pour rechercher du contenu mais il permettrait aussi de découvrir de la connaissance (knowledge discovery).&nbsp; Ceci est notamment appliqué dans l’industrie des sciences du vivant pour accélérer le développement de nouveaux traitements. Dans ce contexte, la technologie est utilisée pour &nbsp;extraire la connaissance générée par les équipes de recherche et contenue dans les LIMS (laboratory information management system), ELN (electronic lab notebook) , base de données scientifiques, etc (solution développée par ATTIVIO).</p>



<p class="wp-block-paragraph">En résumé, le <em>cognitive search</em> offre beaucoup de possibilités et de facilités en termes de recherche d’information. Cette technologie permet à l’utilisateur de retrouver rapidement du contenu pertinent et contextualisé. Néanmoins son implémentation est complexe et à ses limites. Il faut ingérer l’information provenant de sources diverses sous différents formats et en extraire des textes qui seront indexés. Les algorithmes utilisés par exemple pour les systèmes de recommandations et d’extraction d’entités nécessitent d’être entrainés avec des données de qualité. Très souvent, ces modèles générés par apprentissage automatique ont une marge d&#8217;erreur non négligeable et il est alors nécessaire de les combiner avec des modèles basés sur des règles bien définies (rule-based). Il n’est pas non plus facile de mettre en place des solutions qui supportent plusieurs langues, étant assez générales pour inclure plusieurs domaines business tout en gardant la capacité de fournir des résultats de recherche pertinents. Et enfin, l’amélioration des performances du système de recherche ne se fait pas de façon totalement automatique. Par exemple, pour ce qui est de la solution développée par IBM (Watson Discovery), l’utilisateur doit fournir au système des exemples de requêtes types et classer les résultats retournés par celui-ci. </p>



<p class="wp-block-paragraph">Etant donné ces difficultés, il est important de bien mesurer les avantages et inconvénients d’un tel système avant d’envisager de l’implémenter. Cependant, les fonctionnalités de recherche avancée qu’apporte le <em>Cognitive Search </em>restent impressionnantes si l&#8217;on accepte une certaine marge d&#8217;erreur. </p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"><strong>Références</strong></p>



<p class="wp-block-paragraph">The Forrester Wave<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" />: Cognitive Search And Knowledge Discovery Solutions, Q2 2017 </p>



<p class="wp-block-paragraph">5-Minute Guide to Cognitive Search for the Life Sciences (ATTIVIO)</p>



<p class="wp-block-paragraph"><a href="https://azure.microsoft.com/en-in/blog/global-scale-ai-with-azure-cognitive-services">https://azure.microsoft.com/en-in/blog/global-scale-ai-with-azure-cognitive-services</a></p>



<p class="wp-block-paragraph"><a href="https://www.ibm.com/cloud/garage/architectures/cognitiveDiscoveryDomain/">ttps://www.ibm.com/cloud/garage/architectures/cognitiveDiscoveryDomain/</a></p>



<p class="wp-block-paragraph"><a href="https://www.elastic.co/">https://www.elastic.co/</a></p>


]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Doorzoek je interne websites met Nutch</title>
		<link>https://www.smalsresearch.be/doorzoek-je-interne-websites-met-nutch/</link>
		
		<dc:creator><![CDATA[Bob Lannoy]]></dc:creator>
		<pubDate>Mon, 11 Mar 2013 09:16:53 +0000</pubDate>
				<category><![CDATA[Blog post]]></category>
		<category><![CDATA[Apache Nutch]]></category>
		<category><![CDATA[enterprise search]]></category>
		<category><![CDATA[Information management]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[solr]]></category>
		<guid isPermaLink="false">/?p=5218</guid>

					<description><![CDATA[In een grotere organisatie heb je wel meerdere teams die een eigen website/wiki hebben naast het klassieke intranet. Vaak is dit niet geïntegreerd, terwijl dit een interessante bron van informatie kan zijn. Zoekmachines zijn de methode bij uitstek om disparate bronnen samen te brengen en doorzoekbaar te maken zonder alle sites samen te brengen op [&#8230;]]]></description>
										<content:encoded><![CDATA[<div>
<p><img decoding="async" class="alignright size-full wp-image-5358" alt="nutch_logo_tm" src="/wp-content/uploads/2013/02/nutch_logo_tm.gif" width="210" height="83" />In een grotere organisatie heb je wel meerdere teams die een eigen website/wiki hebben naast het klassieke intranet. Vaak is dit niet geïntegreerd, terwijl dit een interessante bron van informatie kan zijn. Zoekmachines zijn de methode bij uitstek om disparate bronnen samen te brengen en doorzoekbaar te maken zonder alle sites samen te brengen op één platform.</p>
</div>
<div>
<p>In de open source wereld zijn Apache <a href="https://lucene.apache.org" target="_blank">Lucene</a> en <a href="https://lucene.apache.org/solr/" target="_blank">Solr</a> de vaakst genoemde oplossingen om een zoekmachine te bouwen. Het probleem is dat deze geen &#8216;web crawler&#8217; bevatten, namelijk een systeem dat webpagina&#8217;s opvraagt, de inhoud indexeert en de aanwezige links op hun beurt verwerkt, net zoals Google doet. <a href="https://nutch.apache.org" target="_blank">Apache Nutch</a> is een zusterproject van Lucene dat zich op dit terrein waagt, namelijk een &#8220;Google&#8221; voor intern gebruik. In deze post gaan we eens kijken hoe je Nutch opzet en gebruikt. Merk op dat dit een technische uitleg zal zijn.</p>
</div>
<h1>Voorbereiding</h1>
<div>Nutch bestaat al sinds 2005 als Apache project en bestaat momenteel in twee versies: 1.6 (de stabiele versie waar er nog releases op gebeuren) en 2.1 (een vernieuwde versie met ondersteuning voor NoSQL backends). Voor de tests heb ik gekozen voor de laatste versie (2.1). Het eerste wat opvalt is het gebrek aan goede documentatie voor de 2.x reeks. Er zijn wat startpunten (<a href="https://wiki.apache.org/nutch/Nutch2Tutorial" target="_blank">Nutch op HBase</a> en op <a href="https://nlp.solutions.asia/?p=180" target="_blank">MySQL</a>) maar vaak ben je toch aangewezen op forums en blogposts van anderen.</div>
<div>Al snel bleek dat het opzetten niet zo evident was aangezien de onderliggende database tijdens het crawlen crashte. Na pogingen met HBase, MySQL en Cassandra, is het uiteindelijk toch gelukt met HBase, nadat de onderliggende machine genoeg RAM geheugen had gekregen (6GB in dit geval). Let op dat je niet de laatste versie gebruikt van HBase maar een versie die compatibel is met Nutch, zoals de versie 0.90.6.</div>
<div>Nutch zal volgende stappen doorlopen bij een eerste crawl:</div>
<div>
<ul>
<li>initiële URL&#8217;s worden aan Nutch gegeven, bijv. de lijst met websites die je wenst te indexeren (<em>inject</em>)</li>
<li>en dan doorloopt Nutch een aantal maal het proces (dit wordt de <em>depth</em> genoemd)</li>
</ul>
</div>
<div>
<ul>
<ul>
<li>generatie van lijst van URLs die moet behandeld worden (g<em>enerate</em>)</li>
<li>pagina&#8217;s ophalen (f<em>etch</em>)</li>
<li>inhoud van de pagina&#8217;s verwerken (p<em>arse</em>). Hierbij kunnen zowel gewone html pagina&#8217;s geïndexeerd worden als documenten (PDF, DOC, &#8230;)</li>
<li>de Nutch DB update (<em>updatedb</em>)</li>
<li>opslag van de resultaten in Solr (<em>solrindex</em>)</li>
</ul>
</ul>
<p><a href="https://techvineyard.blogspot.be/2010/12/build-nutch-20.html#Crawl_Script" target="_blank">Hier</a> kan je een voorbeeldscript vinden dat alle stappen samenbrengt. Je kan ook gebruiken maken van het &#8216;crawl&#8217;-commando dat de stappen combineert, maar dan heb je minder zicht op de verschillende stappen van het proces.</p>
</div>
<p>Nutch kan zowel websites crawlen (http(s)://) als filesystemen (file:// en ftp://). Bij websites waar een HTTP authenticatie vereist is kunnen de nodige credentials in een configuratiebestand opgenomen worden. Let natuurlijk wel op dat dit credentials zijn die geen beschermde of gevoelige inhoud kunnen beschikbaar maken omdat de zoekresultaten publiek beschikbaar zullen zijn.</p>
<h2>Configuratie</h2>
<div>De configuratie van Nutch gebeurt in<em> nutch-site.xml</em> waar je de standaardparameters uit <em>nutch-default.xml</em> kan aanpassen. De interessante parameters zijn daar:</div>
<div>
<ul>
<li><em>http.agent.name</em>&nbsp;: welke browser agent string wordt er door doelwebsites gezien zodat je op die sites een crawler kan toelaten en ook een verschil kan maken tussen crawler-traffiek en gewone traffiek.</li>
<li><em>parser.character.encoding.default</em>&nbsp;: welke encoding er moet gebruikt worden als deze ontbreekt (bijv. utf-8).</li>
<li><em>storage.data.store.class</em>&nbsp;: welke backend er wordt gebruikt, bijv. org.apache.gora.hbase.store.HBaseStore voor Hbase.</li>
<li><em>plugin.includes</em>&nbsp;: Nutch heeft een plugin architectuur die het mogelijk maakt om bepaalde functionaliteit toe te voegen. Er zijn een aantal plugins die standaard geconfigureerd zijn. In het geval van de tests werden volgende plugins gebruikt</li>
</ul>
<pre>protocol-httpclient|urlfilter-regex|parse-(html|tika)|index-(basic|anchor|more)|urlnormalizer-(pass|regex|basic)|scoring-opic</pre>
<ul>
<li><em>db.ignore.external.links</em>&nbsp;: geeft aan of de crawler buiten de initieel aangegeven websites links mag volgen.</li>
<li><em>file.content.limit &amp; http.content.limit</em>: hoe groot mogen de geïndexeerde bestanden of webpagina&#8217;s zijn. Dit moet overeenkomen met wat je als groottebeperking opgeeft in de onderliggende databank.</li>
</ul>
<h2>Backend</h2>
<p>De HBase backend kan ook getuned worden maar dat is eigenlijk een topic op zich. Je kan <a href="https://gbif.blogspot.be/2012/07/optimizing-writes-in-hbase.html" target="_blank">hier</a> en <a href="https://www.packtpub.com/article/hbase-basic-performance-tuning" target="_blank">hier</a> wat  informatie vinden. Het belangrijkste is dat er genoeg geheugen beschikbaar is.</p>
</div>
<h2>Plugins</h2>
<div>Zoals gezegd zijn er verschillende plugins die het proces kunnen sturen. Je kan die plugins ook apart aanroepen om het effect van een bepaalde configuratie te testen, wat uitermate handig is.</div>
<div>De standaardplugins die mij goed van pas kwamen:</div>
<div>
<ul>
<li><strong>URLfilter-regex</strong></li>
</ul>
<p style="padding-left: 30px;">Je kan URL&#8217;s filteren en bepalen welke URL&#8217;s in aanmerking komen en welke niet. In het configuratiebestand &#8220;regex-urlfilter.txt&#8221; kan je dit met behulp van reguliere expressies configureren. URL&#8217;s die voldoen aan de expressie kan je dan uitsluiten door er &#8216;-&#8216; voor te zetten of expliciet toevoegen door &#8216;+&#8217;. Zo zal de regel</p>
<pre style="padding-left: 30px;">-index.php/Help:.*</pre>
<p style="padding-left: 30px;">Wikimedia links met de hulppagina&#8217;s niet indexeren of kan je bijvoorbeeld instellen dat het url-pad niet dieper mag zijn dan 7 niveau&#8217;s:</p>
<pre style="padding-left: 30px;">"-.*/(?:[^/]+/){7,}</pre>
<p style="padding-left: 30px;">Je kan een regel toevoegen aan het bestand en dan testen met:</p>
<pre style="padding-left: 30px;"> <em>&lt;installatiedir&gt;/bin/nutch plugin urlfilter-regex org.apache.nutch.urlfilter.regex.RegexURLFilter</em></pre>
<p style="padding-left: 30px;">Je geeft dan een url in en krijgt dan het resultaat of deze al dan niet gefilterd wordt.</p>
<ul>
<li><strong>URLNormalizer-regex</strong></li>
</ul>
<p style="padding-left: 30px;">De opgehaalde URL&#8217;s kan je normalizeren naar een bepaalde vorm. Dit is vooral handig als je bijvoorbeeld een site indexeert waarvan documenten op verschillende locaties terugkomen maar met een verschillend pad. Dit was in de tests het geval met een website gebaseerd op IBM Lotus Domino. De url naar een document hangt af van het pad langswaar je er naar toe gaat.</p>
<p style="padding-left: 30px;">Eenzelfde document heeft bijvoorbeeld als urls (met zijn identifier als laatste parameter):</p>
<pre style="padding-left: 60px;">http://website/databank.nsf/&lt;id1&gt;/&lt;id&gt;?OpenDocument
http://website/databank.nsf/&lt;id2&gt;/&lt;id&gt;?OpenDocument</pre>
</div>
<div>
<p style="padding-left: 30px;">Als je dan weet dat er een URL bestaat om het document rechtstreeks op te vragen door</p>
<pre style="padding-left: 60px;">http://website/databank.nsf/View/&lt;id&gt;</pre>
<p style="padding-left: 30px;">dan kan je de bovenstaande urls normalizeren met behulp van volgende expressies</p>
</div>
<pre style="padding-left: 60px;">&lt;regex&gt;
 &lt;pattern&gt;(\.nsf)/[^/]*/(.*OpenDocument$)&lt;/pattern&gt;
 &lt;substitution&gt;$1/View/$2&lt;/substitution&gt;
&lt;/regex&gt;</pre>
<ul>
<li><strong>index-more</strong></li>
</ul>
<p style="padding-left: 30px;">Deze plugin indexeert onder andere ook het content-type van de gecrawlde inhoud. Dit kan je achteraf gebruiken om in de zoekmachine te kunnen vernauwen op bepaalde content types zoals een PDF.</p>
<h2>Integratie met Solr</h2>
<div>Nutch heeft zijn eigen index maar je kan de gecrawlde pagina&#8217;s in Solr stoppen. Dit heeft als voordeel dat je een centrale Solr server kan gebruiken voor allerlei zoekfuncties en dat je de kracht, flexibiliteit en mogelijkheden van Solr kan gebruiken. De configuratie van Solr valt echter buiten het bestek van deze post. Je kan facetten gebruiken op specifieke velden zoals de beschikbare websites, de content types en zelfs de taal die gedetecteerd werd.</div>
<div>Als je geen gebruik wenst te maken van Solr kan je ook <a href="https://www.elasticsearch.org/" target="_blank">ElasticSearch</a> gebruiken.</div>
<div>Het feit dat er nog een extra index wordt gebruikt heeft natuurlijk wel als resultaat dat je twee backends hebt met de gegevens. Het voordeel is wel dat de Solr instantie los staat van Nutch en dus ook gevoed kan worden met andere data.</div>
<p>Aangezien Nutch 2.1 zelf geen userinterface heeft om de index te doorzoeken ben je zowiezo aangewezen op een UI die bijvoorbeeld bovenop Solr staat. In de tests werd geëxperimenteerd met <a href="https://github.com/evolvingweb/ajax-solr" target="_blank">Ajax-solr</a>, een set Javascript libraries om een UI te bouwen.</p>
<h1>3,2,1 &#8230; start</h1>
<p>Na alles te hebben geïnstalleerd en configureerd kan je een crawl starten. Het blijkt al snel dat er redelijk wat tuning nodig is om de crawl snel genoeg te laten verlopen.</p>
<h2>Snelheid</h2>
<p>De standaardconfiguratie van Nutch beperkt sterk het aantal pagina&#8217;s per tijdseenheid die worden opgehaald. In een eerste run (7 iteraties van het hierboven beschreven proces) duurde het verschillende uren om 6000 pagina&#8217;s op te halen. Je kan dit sneller laten verlopen door te spelen met de parameter <em>fetcher.server.delay</em> (aantal seconden tussen requests op eenzelfde server, zodat je een server niet overspoelt met requests, ) en een aantal parameters van de Fetcher threads (<em> fetcher.threads.fetch,  fetcher.threads.per.queue, fetcher.threads.per.host</em>). Met de waarden 3, 30, 15 en 3 voor deze vier parameters verliep dezelfde crawl een heel stuk sneller. Er werden uiteindelijk 80 000 urls verwerkt op 2.5 uur. Je moet wel in de gaten houden of de server nog meekan, de onderliggende backend en de Solr-instantie.</p>
<h2>Onderhoud</h2>
<div>De resultaten van de crawl kan je gaan bekijken door zoekopdrachten uit te voeren en te gaan kijken of er ongewenste resultaten bij zijn of andere vreemde URLs. Die kan je dan in de Nutch configuratie uitsluiten of omvormen.</div>
<p>Daarnaast moet je ook gaan kijken in de Solr index en configuratie wat er daar allemaal is van mogelijkheden en verbeteringen. Na aanpassingen te hebben gedaan in Solr kan je  de volledige Nutch-index opnieuw in Solr stoppen door volgend commando:</p>
<pre style="padding-left: 30px;">&gt; bin/nutch solrindex &lt;Url van solr&gt; -reindex</pre>
<h2>Vernieuwen van pagina&#8217;s</h2>
<p>Een onduidelijk punt dat bleef is het verversen van de pagina&#8217;s. Het zogenaamd &#8220;recrawlen&#8221; is niet goed gedocumenteerd. In de Nutch index wordt er bijgehouden wanneer een pagina opnieuw mag opgehaald worden. Deze waarde wordt ingesteld aan de hand van de parameters rond de &#8220;Fetchschedule&#8221; zoals <em>db.fetch.interval.default</em>. Standaard zal Nutch maar na 30 dagen een pagina opnieuw ophalen. Je kan voor een pagina gaan kijken wanneer ze de volgende keer zal opgehaald worden via volgend commando:</p>
<div>
<pre style="padding-left: 30px;">&gt; bin/nutch readdb -url http://website.com/pagina</pre>
<blockquote>
<pre>key: http://website.com/pagina
baseUrl: http://website.com/pagina
status: 2 (status_fetched)
fetchInterval:  83000
fetchTime:      1360246212783
prevFetchTime:  1360162351060
....
title:  Title</pre>
</blockquote>
<div>De parameter <em>fetchTime</em> geeft de datum &amp; tijd vanaf wanneer de pagina opnieuw mag opgehaald worden. In dit geval is dit 1360246212(783) wat je via het commando <em>date</em> kan omzetten:</div>
<div>
<pre style="padding-left: 30px;">&gt; date -u -d @1360246212
Thu Feb  7 14:10:12 UTC 2013</pre>
</div>
<p>Het <em>fetchInterval</em> zal worden toegevoegd aan de moment dat de pagina opnieuw wordt opgevraagd, in dit geval 83000 seconden of 23 uur. Zo zal je dus elke dag de pagina&#8217;s kunnen vernieuwen.</p>
<p>Voor een recrawl kan je je bijvoorbeeld beperken tot 2 iteraties van het crawlproces. Zo worden bestaande pagina&#8217;s opnieuw overlopen en eventueel nieuwe links gedetecteerd. Deze worden dan in de volgende iteratie ook mee geïndexeerd. Het heeft ook als gevolg dat je index nog verder groeit als er bij vorige iteraties nog extra links werden gedetecteerd. Zo werd in de test een index van 80 000 pagina&#8217;s er snel eentje van 220 000 pagina&#8217;s.</p>
<p>Pagina&#8217;s die verdwijnen worden niet uit de Solr-index verwijderd. In Nutch 1.6 was er hiervoor een aparte job, voor Nutch 2.x is dit momenteel voorzien in de trunk en zal dit met de nieuwe versie beschikbaar zijn.</p>
<p>Gezien de indexatietijd redelijk beperkt is kan je er ook voor opteren om telkens een nieuwe crawl uit te voeren en de vorige index steeds te wissen.</p>
<h1>Conclusie</h1>
<p>Met de end-to-end implementatie van deze test is duidelijk dat er heel wat komt kijken bij de implementatie van een zoekoplossing, niet alleen voor de pure installatie/configuratie maar ook voor het iteratieve onderhoud zoals het opsporen/weren van ongewenste URLs.  Het ter beschikking stellen van de nodige Solr functionaliteit (zoals omgaan met meertaligheid, facetten, autocompletion, spellingscontrole, &#8230;) neemt ook een heel stuk van de implementatie in beslag. Dan spreken we nog niet over het nut van statistiek achteraf, zodat de zoekmachine meer kan aangepast worden naar de noden van de eindgebruiker. De implementatie van een zoekmachine is in dit aspect geen project maar een continu proces.</p>
<p>Nutch 2.1 is nog wat ruw, vooral op documentatievlak en ontbreekt ook nog een aantal belangrijke features zoals het schoonmaken van de Solr-index bij het verdwijnen van pagina&#8217;s. Maar het is alleszins een bruikbaar systeem. De nodige competenties gaan echter verder dan Nutch alleen want als je een NoSQL backend zoals HBase gebruikt heb je daar uiteraard ook kennis van nodig en met Solr heb je enorme mogelijkheden tot je beschikking.</p>
<p>Een gebruiker van een dergelijke zoekmachine kan alleen maar beter worden van een systeem dat alle interne websites ter beschikking stelt. Daar staat natuurlijk tegenover dat dit niet zo evident is om dit op een gebruiksvriendelijke manier aan te brengen. De aangeboden functionaliteit van een crawler is ook beperkt tot de gegevens die beschikbaar zijn in de webpagina. Standaard zal je dus de inhoud van de pagina in de index stoppen met wat metadata (zoals datum, content-type, url). Wil je meer specifieke informatie zoals de auteur van de tekst dan kan je dit niet met de crawler (tenzij je een specifiek veld hebt en de nodige logica om de auteur uit een metadata veld te halen op de pagina). Daarom dat een content management systeem dat zelf zijn inhoud in de zoekmachine stopt meer rijke informatie kan ter beschikking stellen.</p>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>e-Discovery &#8211; Quesaco&#160;?</title>
		<link>https://www.smalsresearch.be/e-discovery-quesaco/</link>
		
		<dc:creator><![CDATA[Arnaud Hulstaert]]></dc:creator>
		<pubDate>Wed, 23 Nov 2011 07:00:26 +0000</pubDate>
				<category><![CDATA[Blog post]]></category>
		<category><![CDATA[ediscovery]]></category>
		<category><![CDATA[enterprise search]]></category>
		<category><![CDATA[Information management]]></category>
		<guid isPermaLink="false">/?p=3288</guid>

					<description><![CDATA[Il arrive régulièrement que l&#8217;on me demande ce qu&#8217;est l&#8217;e-discovery et dans quelle mesure cela peut intéresser nos clients. L&#8217;e-discovery &#8220;refers to any process in which electronic data is sought, located, secured, and searched with the intent of using it as evidence in a civil or criminal legal case. E-discovery can be carried out offline [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" class="size-medium wp-image-3419 alignright" title="electronic discovery" src="/wp-content/uploads/2011/10/electronic_discovery-300x228.jpg" alt="" width="190" height="145" srcset="https://www.smalsresearch.be/wp-content/uploads/2011/10/electronic_discovery-300x228.jpg 300w, https://www.smalsresearch.be/wp-content/uploads/2011/10/electronic_discovery.jpg 397w" sizes="auto, (max-width: 190px) 100vw, 190px" />Il arrive régulièrement que l&#8217;on me demande ce qu&#8217;est l&#8217;<span style="text-decoration: underline;">e-discovery</span> et dans quelle mesure cela peut intéresser nos clients. L&#8217;e-discovery &#8220;<em>refers to any process in which electronic data is <span style="text-decoration: underline;">sought, located, secured, and searched</span> with the intent of using it as <span style="text-decoration: underline;">evidence in a civil or criminal legal case</span>. E-discovery can be carried out offline on a particular computer or it can be done in a network. Court-ordered or government sanctioned hacking for the purpose of obtaining critical evidence is also a type of e-discovery</em>&#8221; (<a href="https://searchfinancialsecurity.techtarget.com/definition/electronic-discovery" target="_blank">source</a>).</p>
<h4>Explication</h4>
<p>Il s&#8217;agit donc de pouvoir retrouver des données électroniques suite à une demande d&#8217;un juge ou pour prouver un élément devant les tribunaux. Pour ce faire, il faut mettre en place une démarche globale, qui a fait l&#8217;objet d&#8217;un modèle de référence (<a href="https://www.edrm.net/" target="_blank">http://www.edrm.net/</a>) comportant 9 étapes&nbsp;:</p>
<p><a href="/wp-content/uploads/2011/10/edrm_model.png"><img loading="lazy" decoding="async" class="aligncenter" title="edrm_model" src="/wp-content/uploads/2011/10/edrm_model.png" alt="" width="398" height="214" /></a></p>
<p>Ce n&#8217;est donc pas simplement une recherche d&#8217;informations dans un ou plusieurs systèmes à l&#8217;aide d&#8217;un outil de recherches. Le but visé par une recherche de type &#8216;e-discovery&#8217; est de retrouver <strong>toutes</strong> les données concernant une demande bien spécifique.</p>
<p>Le e-discovery est&nbsp;:</p>
<ul>
<li>une <span style="text-decoration: underline;">obligation de garder toute preuve</span> (ou élément de preuve) que l&#8217;on estime relevant (à définir &#8211; cela peut aller jusqu&#8217;au SMS échangés &#8211; pensons au <a href="https://fr.wikipedia.org/wiki/Fortisgate" target="_blank">Fortisgate</a>) ;</li>
<li>une <span style="text-decoration: underline;">interdiction de détruire</span> tout document une fois un litige ouvert ou en voie d&#8217;ouverture ;</li>
<li>une <span style="text-decoration: underline;">obligation de fournir la liste des documents disponibles à l&#8217;autre partie</span> afin qu&#8217;elle puisse en prendre connaissance et l&#8217;utiliser en justice ;</li>
<li>un besoin de pouvoir répondre dans des temps relativement courts (endéans la semaine).</li>
</ul>
<p>En cela, <span style="text-decoration: underline;">il se différencie d&#8217;une démarche de type &#8220;information retrieval / search&#8221; qui n&#8217;a pas les mêmes exigences en matière d&#8217;exhaustivité et de preuve</span>.</p>
<h4>Origine</h4>
<p><span style="text-decoration: underline;">Ce besoin trouve son origine dans le droit anglo-saxon</span> et dans un amendement du <a href="https://en.wikipedia.org/wiki/Federal_Rules_of_Civil_Procedure" target="_blank"><em>Federal Rules of Civil Procedure</em></a> aux États-Unis. Alors que dans le droit européen, le juge ne peut exiger que la production d&#8217;un document bien particulier pour lequel il a des présomptions sérieuses qu&#8217;une des parties le détient, <span style="text-decoration: underline;">dans le droit anglo-saxon, le juge (ou une autorité de contrôle dans le cadre d&#8217;une enquête) peut exiger la production d&#8217;un ensemble de documents ou tous les documents qui concernent l&#8217;objet du litige (ou de l&#8217;enquête)</span>. En outre, les <span style="text-decoration: underline;">sanctions</span> en cas de perte sont <span style="text-decoration: underline;">beaucoup plus sévères</span> qu&#8217;en Europe (ex. en 2004, Philip Moris a été condamné à une amende de 2,75 M $ à la suite de la perte d’e-mails nécessaires dans le cadre d’un procès &#8211;<a href="https://arkfeld.blogs.com/ede/2004/07/275_million_dol.html" target="_blank">source</a>&#8211; ; Qualcomm Attorneys a été condamné en 2008 à une amende de 8 M $ pour des raisons similaires &#8211;<a href="https://blawg.scottandscottllp.com/businessandtechnologylaw/2008/01/qualcomm_attorneys_hit_with_mu.html" target="_blank">source</a>).</p>
<h4>Utilité&nbsp;?</h4>
<p><img loading="lazy" decoding="async" class="size-medium wp-image-3454 alignright" title="drapeau_UK_US" src="/wp-content/uploads/2011/10/drapeau_UK_US-300x150.gif" alt="" width="180" height="90" />Les Européens sont concernés par l&#8217;e-discovery <span style="text-decoration: underline;">en cas de litige devant les tribunaux anglais ou américains, en ce compris s&#8217;il s&#8217;agit de sous-traitance</span>.</p>
<p>Dans la négative, il peut être utile s&#8217;il existe un besoin de pouvoir retrouver tout type de preuve très rapidement et de manière exhaustive. Dans le cas contraire, n&#8217;hésitez pas à poser un regard critique sur le discours des fournisseurs de logiciels qui utilisent souvent l&#8217;e-discovery comme argument de marketing.</p>
<p>Par ailleurs, il faut encore examiner dans quelle mesure les documents pourront être retenus comme preuve devant les tribunaux. Pour ce faire, certaines règles belges et/ou européennes en matière de recevabilité de la preuve devront être respectés.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Apache Solr</title>
		<link>https://www.smalsresearch.be/apache-solr/</link>
		
		<dc:creator><![CDATA[Bob Lannoy]]></dc:creator>
		<pubDate>Fri, 23 Jul 2010 09:08:50 +0000</pubDate>
				<category><![CDATA[Blog post]]></category>
		<category><![CDATA[enterprise search]]></category>
		<category><![CDATA[Information management]]></category>
		<category><![CDATA[Open Source]]></category>
		<guid isPermaLink="false">http://blogs.smals-mvm.be/research/?p=1298</guid>

					<description><![CDATA[In de wereld van content management duikt meer en meer de naam op van Apache Solr als het op zoekfunctionaliteit aankomt. Apache Solr is een zoekplatform dat deel uitmaakt van het Apache Lucene project. Lucene is een bekende softwarebibliotheek met uitgebreide functionaliteit voor de bouw van een eigen zoekmotor. Binnen Smals zijn er een aantal [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>In de wereld van content management duikt meer en meer de naam op van Apache Solr als het op zoekfunctionaliteit aankomt.<a href="https://lucene.apache.org/solr" target="_blank"></a></p>
<p><a href="https://lucene.apache.org/solr" target="_blank"> Apache Solr</a> is een zoekplatform dat deel uitmaakt van het Apache Lucene project. Lucene is een bekende softwarebibliotheek met uitgebreide functionaliteit voor de bouw van een eigen zoekmotor. Binnen Smals zijn er een aantal projecten die ervan gebruik maken. Lucene vervult twee nodige functionaliteiten van een zoekoplossing, namelijk het opbouwen van de index en het ondervragen ervan. Rond deze kernfunctionaliteiten werd een server gebouwd, Solr genaamd, die uitgebreider is qua functionaliteit dan enkel Lucene. Net zoals Lucene is Solr een oplossing gericht op developers.</p>
<p>Het werd dus tijd om deze open source oplossing eens van naderbij te bekijken. Hiervoor werd het product onderworpen aan een klein aantal tests.</p>
<p><span id="more-1298"></span>Solr is Java-gebaseerd en maakt gebruik van een applicatieserver (Tomcat, Jboss, Jetty, WebLogic…). De interface met  Solr is echter programmeertaal-agnostisch, namelijk steunend op XML/JSON en HTTP. Dit maakt dat bijvoorbeeld ook PHP-oplossingen zoals <a href="https://www.drupal.org/project/apachesolr" target="_blank">Drupal</a> ervan kunnen gebruik maken.</p>
<p>Deze oplossing biedt ondermeer:</p>
<ul>
<li>configuratie via XML-bestanden</li>
<li>flexibel schema met heel wat configuratiemogelijkheden.</li>
<li>tekstanalyse afhankelijk van gedefinieerde veldtypes</li>
<li>Java API (SolrJ)</li>
<li>tools voor de conversie van documenten (MS Office, PDF, OpenOffice, &#8230;) naar het Solr-formaat (gebaseerd op <a href="https://tika.apache.org/" target="_blank">Apache Tika</a>)</li>
<li>Geavanceerde functionaliteit zoals facetten, highlighting, spellingscontrole (&#8220;bedoel je &lt;dit woord&gt;?&#8221;), gewogen queries, &#8230;</li>
<li>Schaalbare oplossing die gespreid kan worden over meerdere servers</li>
<li>Administratieinterface met mogelijkheden van debugging</li>
</ul>
<p>Als serveroplossing biedt Solr het voordeel dat dit de basis kan vormen van een centrale zoekinfrastructuur die door één team kan beheerd worden. Dit in tegenstelling tot Lucene-implementaties die steeds specifiek per project worden gehanteerd.</p>
<p>Solr is (nog) niet vergelijkbaar met commerciële zoekoplossingen die out-of-the-box een reeks connectoren bezitten naar heel wat content management systemen. Met het <a href="https://incubator.apache.org/connectors/" target="_blank">Lucene Connectors Framework</a> wenst men hieraan te verhelpen, zij het dat project nog in zijn kinderschoenen staat.</p>
<p>Uiteraard dien je in Solr nog heel wat werk zelf te doen zoals het indexeren van de documenten (die in een correct formaat moeten zijn), keuzes maken voor de tekstanalyse, bouwen van de zoekschermen, &#8230;</p>
<p>Daar staat dan tegenover dat Solr wel heel wat van de nodige functionaliteit in huis heeft en dus zeker de moeite waard is om te bekijken. Misschien kan dit het begin zijn voor een dienstenaanbod rond zoektechnologie?</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
