
Snabbsökningen i Share (den i lilla rutan upp till höger) beter sig inte som de flesta förväntar. När du skriver flera sökord så kommer Alfresco att vi sökningen använda Eller (OR). Vilket betyder att du får ett fler träffar med flera sökord, inte att du som förväntat får en smalare träffbild. Vi måste alltså få Alfresco att göra Och (AND) mellan sökorden.
Nu går det alldeles utmärkt att själv skriva AND mellan sökorden (prova gärna), men vi vill ha det automatiskt. Det finns ett ärende ALF-6349 där det beskrivs hur det kan göras generellt för alla sökningar genom att ändra i Search.java så att den blir konfigurerbar via bean-definitionen. Problemet med att införa den ändringen är att när man redan valt en standard (OR) så kan man inte bara ändra då ett flertal komponenter och egna anpassningar kan vara beroende av nuvarande beteende, och vi kan få oväntade buggar.
Min lösning blev istället att bara ändra för snabbsökningen i Share, även här görs en ändring i projects/repository/source/java/org/alfresco/repo/jscript/Search.java
genom utöka den klassen när sökning sker med javascript search objekt till att kunna ta en ny parameter,
andOperator: boolean optional, if true, use the AND operator, defaults to false (OR)
Nästa fil att ändra var /projects/remote-api/config/alfresco/templates/webscripts/org/alfresco/slingshot/search/search.lib.js
Där vi nu använder parametern i sökningen
var queryDef = {
query: ftsQuery,
language: "fts-alfresco",
page: {maxItems: params.maxResults * 2}, // allow for space for filtering out results
templates: getQueryTemplate(),
defaultField: "keywords",
onerror: "no-results",
sort: sortColumns,
andOperator: true
};
I den här filen behövs ytterligare en ändring,
ftsQuery += ' AND (+TYPE:"cm:content" OR +TYPE:"cm:folder")'
OR måste läggas till här, annars kommer AND användas (om det används i sök-objektet). Sista filen att ändra är projects/remote-api/config/alfresco/templates/webscripts/org/alfresco/slingshot/search/search.get.config.xml
<search>
<default-query-template>%(ALL)</default-query-template>
</search>
Vi måste ändra standar sökmallen, annars kommer alla termer läggas ihop med AND och vi kommer inte få några träffar. Men vi kan istället använda det magiska nyckelorder ALL, så kommer inte bara vår sökning fungera som avsett, utan vi kommer automatisk söka även alla anpassade metadatafält.
Jag kommer ladda upp en komplett diff med mina ändringar till ALF-6349.