That was the reason, query was returning all the big text content which
slowed thing down over 20 fold.
So by filtering out the contents
select ?s ?p ?o where
{
graph <https://resource.lingsoft.fi/416c3258-4974-4ab1-ae3d-115961923010/>
{
(?s ?score ?content) text:query (lsrm:content "some search" ) .
?s ?p ?o FILTER ( ?p != lsrm:content)
}
}
query is as fast as just returning just ?s in the first example. Wonder
why collecting large texts slows things down so much?
On 02/05/2019 18:29, Chris Tomlinson wrote:
Hi Mikael,
Regarding this issue, Is it possible that the 20 sec query is returning a lot more
data than the < 1 sec query?
I usually find that the underlying jena query time is easily dominated by data
transfer costs to a browser.
Chris
On May 2, 2019, at 9:29 AM, Mikael Pesonen <[email protected]> wrote:
Another issue in same setup. Following query is fast (lest than second) as
expected:
select ?s where
{
graph <https://resource.lingsoft.fi/416c3258-4974-4ab1-ae3d-115961923010/>
{
(?s ?score ?content) text:query (lsrm:content "some search" ) .
?s ?p ?o
}
}
But this takes about 20 seconds
select ?s ?p ?o where
{
graph <https://resource.lingsoft.fi/416c3258-4974-4ab1-ae3d-115961923010/>
{
(?s ?score ?content) text:query (lsrm:content "some search" ) .
?s ?p ?o
}
}
Is first query optimized so that ?p and ?o aren't actually collected at all?
What would be the correctway to make this query?
Number of documents is about 3000, and number or triplets per document is 10.
On 02/05/2019 13:56, Mikael Pesonen wrote:
I'm using Jena 3.11, full server as jar, and have following text index config:
<#indexLucene> a text:TextIndexLucene ;
text:directory <jena_text_index> ;
text:entityMap <#entMap> ;
text:storeValues true ;
text:analyzer [ a text:StandardAnalyzer ] ;
text:queryAnalyzer [ a text:KeywordAnalyzer ] ;
text:queryParser text:AnalyzingQueryParser ;
text:multilingualSupport true ;
.
<#entMap> a text:EntityMap ;
text:defaultField "prefLabel" ;
text:entityField "uri" ;
text:uidField "uid" ;
text:langField "lang" ;
text:graphField "graph" ;
text:map (
[ text:field "prefLabel" ; text:predicate skos:prefLabel ]
[ text:field "altLabel" ; text:predicate skos:altLabel ]
[ text:field "content" ; text:predicate lsrm:content ]
) .
When inserting long text into lsrm:content, search usually works only without
language. So, inserted
<https://example.com/someid> lsrm:content "long ... text ... here"@en
and querying like this works
(?s ?score ?content) text:query (lsrm:content "text" ) .
but this returns empty result
(?s ?score ?content) text:query (lsrm:content "text" "lang:en") .
But in some occasions language search does work in lsrm:content, can't see what
is the cause here.
Any ideas?
--
Lingsoft - 30 years of Leading Language Management
www.lingsoft.fi
Speech Applications - Language Management - Translation - Reader's and Writer's
Tools - Text Tools - E-books and M-books
Mikael Pesonen
System Engineer
e-mail: [email protected]
Tel. +358 2 279 3300
Time zone: GMT+2
Helsinki Office
Eteläranta 10
FI-00130 Helsinki
FINLAND
Turku Office
Kauppiaskatu 5 A
FI-20100 Turku
FINLAND
--
Lingsoft - 30 years of Leading Language Management
www.lingsoft.fi
Speech Applications - Language Management - Translation - Reader's and Writer's
Tools - Text Tools - E-books and M-books
Mikael Pesonen
System Engineer
e-mail: [email protected]
Tel. +358 2 279 3300
Time zone: GMT+2
Helsinki Office
Eteläranta 10
FI-00130 Helsinki
FINLAND
Turku Office
Kauppiaskatu 5 A
FI-20100 Turku
FINLAND