YannBrrd / elasticsearch-entity-resolution

Elasticsearch entity resolution plugin based on Duke
http://yannbrrd.github.io
Apache License 2.0
210 stars 52 forks source link

NullPointerException in compareProb #15

Open iDmple opened 9 years ago

iDmple commented 9 years ago

Hi Yann,

I run into a problem with compareProb. I think that v1 is null at this point:

    for (String v1 : vs1) {
        if (v1.equals("")) {
            continue;
        }

My data has some values that are null, indeed.

Here is the stacktrace:

Query Failed [Failed to execute main query] at org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:163) at org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:301) at org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:312) at org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:231) at org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:228) at org.elasticsearch.search.action.SearchServiceTransportAction$23.run(SearchServiceTransportAction.java:559) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.NullPointerException at org.yaba.entity.script.EntityResolutionScript.computeProb(EntityResolutionScript.java:271) at org.yaba.entity.script.EntityResolutionScript.compare(EntityResolutionScript.java:262) at org.yaba.entity.script.EntityResolutionScript.runAsDouble(EntityResolutionScript.java:500) at org.elasticsearch.common.lucene.search.function.ScriptScoreFunction.score(ScriptScoreFunction.java:100) at org.elasticsearch.common.lucene.search.function.FunctionScoreQuery$FunctionFactorScorer.innerScore(FunctionScoreQuery.java:170) at org.elasticsearch.common.lucene.search.function.CustomBoostFactorScorer$AnyNextDoc.score(CustomBoostFactorScorer.java:133) at org.elasticsearch.common.lucene.search.function.CustomBoostFactorScorer.score(CustomBoostFactorScorer.java:71) at org.apache.lucene.search.FilteredQuery$LeapFrogScorer.score(FilteredQuery.java:308) at org.apache.lucene.search.TopScoreDocCollector$OutOfOrderTopScoreDocCollector.collect(TopScoreDocCollector.java:140) at org.apache.lucene.search.Weight$DefaultBulkScorer.scoreAll(Weight.java:193) at org.apache.lucene.search.Weight$DefaultBulkScorer.score(Weight.java:163) at org.apache.lucene.search.BulkScorer.score(BulkScorer.java:35) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:621) at org.elasticsearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:191) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:491) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:448) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:281) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:269) at org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:157) ... 8 more

YannBrrd commented 9 years ago

Hi,

What version are you running on ?

I think is fixed in most recent versions. I'll check today if possible...

Cheers, Yann

Le mer. 23 sept. 2015 17:12, iDmple notifications@github.com a écrit :

Hi Yann,

I run into a problem with compareProb. I think that v1 is null at this point:

for (String v1 : vs1) {
    if (v1.equals("")) {
        continue;
    }

My data has some values that are null, indeed.

Here is the stacktrace:

Query Failed [Failed to execute main query] at org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:163) at org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:301) at org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:312) at org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:231) at org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:228) at org.elasticsearch.search.action.SearchServiceTransportAction$23.run(SearchServiceTransportAction.java:559) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.NullPointerException at org.yaba.entity.script.EntityResolutionScript.computeProb(EntityResolutionScript.java:271) at org.yaba.entity.script.EntityResolutionScript.compare(EntityResolutionScript.java:262) at org.yaba.entity.script.EntityResolutionScript.runAsDouble(EntityResolutionScript.java:500) at org.elasticsearch.common.lucene.search.function.ScriptScoreFunction.score(ScriptScoreFunction.java:100) at org.elasticsearch.common.lucene.search.function.FunctionScoreQuery$FunctionFactorScorer.innerScore(FunctionScoreQuery.java:170) at org.elasticsearch.common.lucene.search.function.CustomBoostFactorScorer$AnyNextDoc.score(CustomBoostFactorScorer.java:133) at org.elasticsearch.common.lucene.search.function.CustomBoostFactorScorer.score(CustomBoostFactorScorer.java:71) at org.apache.lucene.search.FilteredQuery$LeapFrogScorer.score(FilteredQuery.java:308) at org.apache.lucene.search.TopScoreDocCollector$OutOfOrderTopScoreDocCollector.collect(TopScoreDocCollector.java:140) at org.apache.lucene.search.Weight$DefaultBulkScorer.scoreAll(Weight.java:193) at org.apache.lucene.search.Weight$DefaultBulkScorer.score(Weight.java:163) at org.apache.lucene.search.BulkScorer.score(BulkScorer.java:35) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:621) at org.elasticsearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:191) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:491) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:448) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:281) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:269) at org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:157) ... 8 more

— Reply to this email directly or view it on GitHub https://github.com/YannBrrd/elasticsearch-entity-resolution/issues/15.

Cordialement, Yann Barraud

iDmple commented 9 years ago

Hi,

It's 1.7.2 which is the current elasticsearch version as well.

Thanks a lot!

On Sep 24, 2015, 08:51, at 08:51, Yann Barraud notifications@github.com wrote:

Hi,

What version are you running on ?

I think is fixed in most recent versions. I'll check today if possible...

Cheers, Yann

Le mer. 23 sept. 2015 17:12, iDmple notifications@github.com a écrit :

Hi Yann,

I run into a problem with compareProb. I think that v1 is null at this point:

for (String v1 : vs1) {
    if (v1.equals("")) {
        continue;
    }

My data has some values that are null, indeed.

Here is the stacktrace:

Query Failed [Failed to execute main query] at org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:163) at

org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:301) at

org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:312) at

org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:231) at

org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:228) at

org.elasticsearch.search.action.SearchServiceTransportAction$23.run(SearchServiceTransportAction.java:559) at

java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at

java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.NullPointerException at

org.yaba.entity.script.EntityResolutionScript.computeProb(EntityResolutionScript.java:271) at

org.yaba.entity.script.EntityResolutionScript.compare(EntityResolutionScript.java:262) at

org.yaba.entity.script.EntityResolutionScript.runAsDouble(EntityResolutionScript.java:500) at

org.elasticsearch.common.lucene.search.function.ScriptScoreFunction.score(ScriptScoreFunction.java:100) at

org.elasticsearch.common.lucene.search.function.FunctionScoreQuery$FunctionFactorScorer.innerScore(FunctionScoreQuery.java:170) at

org.elasticsearch.common.lucene.search.function.CustomBoostFactorScorer$AnyNextDoc.score(CustomBoostFactorScorer.java:133) at

org.elasticsearch.common.lucene.search.function.CustomBoostFactorScorer.score(CustomBoostFactorScorer.java:71) at

org.apache.lucene.search.FilteredQuery$LeapFrogScorer.score(FilteredQuery.java:308) at

org.apache.lucene.search.TopScoreDocCollector$OutOfOrderTopScoreDocCollector.collect(TopScoreDocCollector.java:140) at

org.apache.lucene.search.Weight$DefaultBulkScorer.scoreAll(Weight.java:193) at org.apache.lucene.search.Weight$DefaultBulkScorer.score(Weight.java:163) at org.apache.lucene.search.BulkScorer.score(BulkScorer.java:35) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:621) at

org.elasticsearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:191) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:491) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:448) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:281) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:269) at org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:157) ... 8 more

— Reply to this email directly or view it on GitHub

https://github.com/YannBrrd/elasticsearch-entity-resolution/issues/15.

Cordialement, Yann Barraud


Reply to this email directly or view it on GitHub: https://github.com/YannBrrd/elasticsearch-entity-resolution/issues/15#issuecomment-142830410

YannBrrd commented 9 years ago

Means I screwed up somewhere.

Can you just send me a test sample ? I'll include that in tests to have it permanently fixed.

Thanks...

Le jeu. 24 sept. 2015 08:54, iDmple notifications@github.com a écrit :

Hi,

It's 1.7.2 which is the current elasticsearch version as well.

Thanks a lot!

On Sep 24, 2015, 08:51, at 08:51, Yann Barraud notifications@github.com wrote:

Hi,

What version are you running on ?

I think is fixed in most recent versions. I'll check today if possible...

Cheers, Yann

Le mer. 23 sept. 2015 17:12, iDmple notifications@github.com a écrit :

Hi Yann,

I run into a problem with compareProb. I think that v1 is null at this point:

for (String v1 : vs1) { if (v1.equals("")) { continue; }

My data has some values that are null, indeed.

Here is the stacktrace:

Query Failed [Failed to execute main query] at org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:163) at

org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:301)

at

org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:312)

at

org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:231)

at

org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:228)

at

org.elasticsearch.search.action.SearchServiceTransportAction$23.run(SearchServiceTransportAction.java:559)

at

java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at

java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.NullPointerException at

org.yaba.entity.script.EntityResolutionScript.computeProb(EntityResolutionScript.java:271)

at

org.yaba.entity.script.EntityResolutionScript.compare(EntityResolutionScript.java:262)

at

org.yaba.entity.script.EntityResolutionScript.runAsDouble(EntityResolutionScript.java:500)

at

org.elasticsearch.common.lucene.search.function.ScriptScoreFunction.score(ScriptScoreFunction.java:100)

at

org.elasticsearch.common.lucene.search.function.FunctionScoreQuery$FunctionFactorScorer.innerScore(FunctionScoreQuery.java:170)

at

org.elasticsearch.common.lucene.search.function.CustomBoostFactorScorer$AnyNextDoc.score(CustomBoostFactorScorer.java:133)

at

org.elasticsearch.common.lucene.search.function.CustomBoostFactorScorer.score(CustomBoostFactorScorer.java:71)

at

org.apache.lucene.search.FilteredQuery$LeapFrogScorer.score(FilteredQuery.java:308)

at

org.apache.lucene.search.TopScoreDocCollector$OutOfOrderTopScoreDocCollector.collect(TopScoreDocCollector.java:140)

at

org.apache.lucene.search.Weight$DefaultBulkScorer.scoreAll(Weight.java:193)

at org.apache.lucene.search.Weight$DefaultBulkScorer.score(Weight.java:163) at org.apache.lucene.search.BulkScorer.score(BulkScorer.java:35) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:621) at

org.elasticsearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:191)

at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:491) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:448) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:281) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:269) at org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:157) ... 8 more

— Reply to this email directly or view it on GitHub

https://github.com/YannBrrd/elasticsearch-entity-resolution/issues/15.

Cordialement, Yann Barraud


Reply to this email directly or view it on GitHub:

https://github.com/YannBrrd/elasticsearch-entity-resolution/issues/15#issuecomment-142830410

— Reply to this email directly or view it on GitHub https://github.com/YannBrrd/elasticsearch-entity-resolution/issues/15#issuecomment-142831999 .

Cordialement, Yann Barraud

iDmple commented 9 years ago

The problem is that I have no idea which data makes it crash. I will try to create a test blindly and hopefully I will succeed.

On Sep 24, 2015, 08:58, at 08:58, Yann Barraud notifications@github.com wrote:

Means I screwed up somewhere.

Can you just send me a test sample ? I'll include that in tests to have it permanently fixed.

Thanks...

Le jeu. 24 sept. 2015 08:54, iDmple notifications@github.com a écrit :

Hi,

It's 1.7.2 which is the current elasticsearch version as well.

Thanks a lot!

On Sep 24, 2015, 08:51, at 08:51, Yann Barraud notifications@github.com wrote:

Hi,

What version are you running on ?

I think is fixed in most recent versions. I'll check today if possible...

Cheers, Yann

Le mer. 23 sept. 2015 17:12, iDmple notifications@github.com a écrit :

Hi Yann,

I run into a problem with compareProb. I think that v1 is null at this point:

for (String v1 : vs1) { if (v1.equals("")) { continue; }

My data has some values that are null, indeed.

Here is the stacktrace:

Query Failed [Failed to execute main query] at

org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:163)

at

org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:301)

at

org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:312)

at

org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:231)

at

org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:228)

at

org.elasticsearch.search.action.SearchServiceTransportAction$23.run(SearchServiceTransportAction.java:559)

at

java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at

java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.NullPointerException at

org.yaba.entity.script.EntityResolutionScript.computeProb(EntityResolutionScript.java:271)

at

org.yaba.entity.script.EntityResolutionScript.compare(EntityResolutionScript.java:262)

at

org.yaba.entity.script.EntityResolutionScript.runAsDouble(EntityResolutionScript.java:500)

at

org.elasticsearch.common.lucene.search.function.ScriptScoreFunction.score(ScriptScoreFunction.java:100)

at

org.elasticsearch.common.lucene.search.function.FunctionScoreQuery$FunctionFactorScorer.innerScore(FunctionScoreQuery.java:170)

at

org.elasticsearch.common.lucene.search.function.CustomBoostFactorScorer$AnyNextDoc.score(CustomBoostFactorScorer.java:133)

at

org.elasticsearch.common.lucene.search.function.CustomBoostFactorScorer.score(CustomBoostFactorScorer.java:71)

at

org.apache.lucene.search.FilteredQuery$LeapFrogScorer.score(FilteredQuery.java:308)

at

org.apache.lucene.search.TopScoreDocCollector$OutOfOrderTopScoreDocCollector.collect(TopScoreDocCollector.java:140)

at

org.apache.lucene.search.Weight$DefaultBulkScorer.scoreAll(Weight.java:193)

at

org.apache.lucene.search.Weight$DefaultBulkScorer.score(Weight.java:163)

at org.apache.lucene.search.BulkScorer.score(BulkScorer.java:35) at

org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:621)

at

org.elasticsearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:191)

at

org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:491)

at

org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:448)

at

org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:281)

at

org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:269)

at

org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:157)

... 8 more

— Reply to this email directly or view it on GitHub

https://github.com/YannBrrd/elasticsearch-entity-resolution/issues/15.

Cordialement, Yann Barraud


Reply to this email directly or view it on GitHub:

https://github.com/YannBrrd/elasticsearch-entity-resolution/issues/15#issuecomment-142830410

— Reply to this email directly or view it on GitHub

https://github.com/YannBrrd/elasticsearch-entity-resolution/issues/15#issuecomment-142831999 .

Cordialement, Yann Barraud


Reply to this email directly or view it on GitHub: https://github.com/YannBrrd/elasticsearch-entity-resolution/issues/15#issuecomment-142833282

iDmple commented 9 years ago

OK, this I found a test case.

Before that I also would like to point out that when a value is null in the request, which can perfectly happen in my case, for example:

"comparator" : { "name" : "no.priv.garshol.duke.comparators.Levenshtein" }, "high" : 0.55, "field" : "title", "cleaners" : [ { "name" : "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low" : 0.3, "value" : null }

Then "no.priv.garshol.duke.cleaners.TrimCleaner" (and also LowerCaseNormalizeCleaner) fail with

Caused by: java.lang.NullPointerException at no.priv.garshol.duke.cleaners.TrimCleaner.clean(TrimCleaner.java:13) at org.yaba.entity.script.EntityResolutionScript.readFields(EntityResolutionScript.java:427) at org.yaba.entity.script.EntityResolutionScript.configureWithFieldsOnly(EntityResolutionScript.java:475) at org.yaba.entity.script.EntityResolutionScript.(EntityResolutionScript.java:97) at org.yaba.entity.script.EntityResolutionScript.(EntityResolutionScript.java:43) at org.yaba.entity.script.EntityResolutionScript$Factory.newScript(EntityResolutionScript.java:567) at org.elasticsearch.script.NativeScriptEngineService.search(NativeScriptEngineService.java:80) at org.elasticsearch.script.ScriptService.search(ScriptService.java:484) at org.elasticsearch.index.query.functionscore.script.ScriptScoreFunctionParser.parse(ScriptScoreFunctionParser.java:90)

as there is no check for null here (probably similar in the other cleaner): value = value.trim(); at line 13.

Now the test for compare prob:

curl -XPUT 'http://localhost:9200/blog/post/1' -d ' { "user": "jkl", "postDate": null, "body": "", "title": "123" }'

curl -XPUT 'http://localhost:9200/blog/post/2' -d ' { "user": null, "postDate": null, "body": null, "title": null }'

and the request: GET /blog/post/_search { "size" : 4, "query" : { "function_score" : { "query" : { "match_all" : { } }, "functions" : [ { "script_score" : { "script" : "entity-resolution", "lang" : "native", "params" : { "entity" : { "fields" : [ { "comparator" : { "name" : "no.priv.garshol.duke.comparators.Levenshtein" }, "high" : 0.55, "field" : "title", "cleaners" : [ { "name" : "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low" : 0.3, "value" : "" }, { "comparator" : { "name" : "no.priv.garshol.duke.comparators.Levenshtein" }, "high" : 0.55, "field" : "body", "cleaners" : [ { "name" : "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low" : 0.3, "value" : "" }, { "comparator" : { "name" : "no.priv.garshol.duke.comparators.ExactComparator" }, "high" : 0.5, "field" : "postDate", "cleaners" : [ { "name" : "no.priv.garshol.duke.cleaners.DigitsOnlyCleaner" } ], "low" : 0.1, "value" : "8200" } ] } } } } ], "score_mode" : "max", "boost_mode" : "replace" } } }

The answer: { "took": 2, "timed_out": false, "shards": { "total": 5, "successful": 4, "failed": 1, "failures": [ { "index": "blog", "shard": 2, "status": 500, "reason": "QueryPhaseExecutionException[[blog][2]: query[filtered(function score (ConstantScore(:_),function=script[entity-resolution], params [{entity={fields=[{comparator={name=no.priv.garshol.duke.comparators.Levenshtein}, high=0.55, field=title, cleaners=[{name=no.priv.garshol.duke.cleaners.TrimCleaner}], low=0.3, value=}, {comparator={name=no.priv.garshol.duke.comparators.Levenshtein}, high=0.55, field=body, cleaners=[{name=no.priv.garshol.duke.cleaners.TrimCleaner}], low=0.3, value=}, {comparator={name=no.priv.garshol.duke.comparators.ExactComparator}, high=0.5, field=postDate, cleaners=[{name=no.priv.garshol.duke.cleaners.DigitsOnlyCleaner}], low=0.1, value=8200}]}}]))->cache(_type:post)],from[0],size[4]: Query Failed [Failed to execute main query]]; nested: NullPointerException; " } ] }, "hits": { "total": 5, "max_score": 0.5, "hits": [ { "_index": "blog", "_type": "post", "id": "AU-wstvaISvApL-JI3I", "_score": 0.5, "_source": { "size": 4, "query": { "function_score": { "query": { "match_all": {} }, "functions": [ { "script_score": { "script": "entity-resolution", "lang": "native", "params": { "entity": { "fields": [ { "comparator": { "name": "no.priv.garshol.duke.comparators.Levenshtein" }, "high": 0.55, "field": "title", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low": 0.3, "value": "a" }, { "comparator": { "name": "no.priv.garshol.duke.comparators.Levenshtein" }, "high": 0.55, "field": "body", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low": 0.3, "value": "" }, { "comparator": { "name": "no.priv.garshol.duke.comparators.ExactComparator" }, "high": 0.5, "field": "postDate", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.DigitsOnlyCleaner" } ], "low": 0.1, "value": "8200" } ] } } } } ], "score_mode": "max", "boost_mode": "replace" } } } }, { "_index": "blog", "_type": "post", "id": "AU-wxPGaISvApL-JI3O", "_score": 0.5, "_source": { "size": 4, "query": { "function_score": { "query": { "match_all": {} }, "functions": [ { "script_score": { "script": "entity-resolution", "lang": "native", "params": { "entity": { "fields": [ { "comparator": { "name": "no.priv.garshol.duke.comparators.Levenshtein" }, "high": 0.55, "field": "title", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low": 0.3, "value": "a" }, { "comparator": { "name": "no.priv.garshol.duke.comparators.Levenshtein" }, "high": 0.55, "field": "body", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low": 0.3, "value": "" }, { "comparator": { "name": "no.priv.garshol.duke.comparators.ExactComparator" }, "high": 0.5, "field": "postDate", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.DigitsOnlyCleaner" } ], "low": 0.1, "value": "8200" } ] } } } } ], "score_mode": "max", "boost_mode": "replace" } } } }, { "_index": "blog", "_type": "post", "id": "AU-xEXQaISvApL-JI3Q", "_score": 0.5, "_source": { "size": 4, "query": { "function_score": { "query": { "match_all": {} }, "functions": [ { "script_score": { "script": "entity-resolution", "lang": "native", "params": { "entity": { "fields": [ { "comparator": { "name": "no.priv.garshol.duke.comparators.Levenshtein" }, "high": 0.55, "field": "title", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low": 0.3, "value": "a" }, { "comparator": { "name": "no.priv.garshol.duke.comparators.Levenshtein" }, "high": 0.55, "field": "body", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low": 0.3, "value": "" }, { "comparator": { "name": "no.priv.garshol.duke.comparators.ExactComparator" }, "high": 0.5, "field": "postDate", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.DigitsOnlyCleaner" } ], "low": 0.1, "value": "8200" } ] } } } } ], "score_mode": "max", "boost_mode": "replace" } } } }, { "_index": "blog", "_type": "post", "id": "AU-wxHaaISvApL-JI3N", "_score": 0.5, "_source": { "size": 4, "query": { "function_score": { "query": { "match_all": {} }, "functions": [ { "script_score": { "script": "entity-resolution", "lang": "native", "params": { "entity": { "fields": [ { "comparator": { "name": "no.priv.garshol.duke.comparators.Levenshtein" }, "high": 0.55, "field": "title", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low": 0.3, "value": "a" }, { "comparator": { "name": "no.priv.garshol.duke.comparators.Levenshtein" }, "high": 0.55, "field": "body", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low": 0.3, "value": "" }, { "comparator": { "name": "no.priv.garshol.duke.comparators.ExactComparator" }, "high": 0.5, "field": "postDate", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.DigitsOnlyCleaner" } ], "low": 0.1, "value": "8200" } ] } } } } ], "score_mode": "max", "boost_mode": "replace" } } } } ] } }

Stackstrace: Caused by: java.lang.NullPointerException at org.yaba.entity.script.EntityResolutionScript.computeProb(EntityResolutionScript.java:271) at org.yaba.entity.script.EntityResolutionScript.compare(EntityResolutionScript.java:262) at org.yaba.entity.script.EntityResolutionScript.runAsDouble(EntityResolutionScript.java:500) at org.elasticsearch.common.lucene.search.function.ScriptScoreFunction.score(ScriptScoreFunction.java:100) at org.elasticsearch.common.lucene.search.function.FunctionScoreQuery$FunctionFactorScorer.innerScore(FunctionScoreQuery.java:170) at org.elasticsearch.common.lucene.search.function.CustomBoostFactorScorer$AnyNextDoc.score(CustomBoostFactorScorer.java:133)

Hopefully that helps!! Thanks a lot.

YannBrrd commented 9 years ago

It does. I'll look at it tomorrow.

Le jeu. 24 sept. 2015 à 12:17, iDmple notifications@github.com a écrit :

OK, this I found a test case.

Before that I also would like to point out that when a value is null in the request, which can perfectly happen in my case, for example:

"comparator" : { "name" : "no.priv.garshol.duke.comparators.Levenshtein" }, "high" : 0.55, "field" : "title", "cleaners" : [ { "name" : "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low" : 0.3, "value" : null }

Then "no.priv.garshol.duke.cleaners.TrimCleaner" (and also LowerCaseNormalizeCleaner) fail with

Caused by: java.lang.NullPointerException at no.priv.garshol.duke.cleaners.TrimCleaner.clean(TrimCleaner.java:13) at org.yaba.entity.script.EntityResolutionScript.readFields(EntityResolutionScript.java:427) at org.yaba.entity.script.EntityResolutionScript.configureWithFieldsOnly(EntityResolutionScript.java:475) at org.yaba.entity.script.EntityResolutionScript.(EntityResolutionScript.java:97) at org.yaba.entity.script.EntityResolutionScript.(EntityResolutionScript.java:43) at org.yaba.entity.script.EntityResolutionScript$Factory.newScript(EntityResolutionScript.java:567) at org.elasticsearch.script.NativeScriptEngineService.search(NativeScriptEngineService.java:80) at org.elasticsearch.script.ScriptService.search(ScriptService.java:484) at org.elasticsearch.index.query.functionscore.script.ScriptScoreFunctionParser.parse(ScriptScoreFunctionParser.java:90)

as there is no check for null here (probably similar in the other cleaner): value = value.trim(); at line 13.

Now the test for compare prob:

curl -XPUT 'http://localhost:9200/blog/post/1' -d ' { "user": "jkl", "postDate": null, "body": "", "title": "123" }'

curl -XPUT 'http://localhost:9200/blog/post/2' -d ' { "user": null, "postDate": null, "body": null, "title": null }'

and the request: GET /blog/post/_search { "size" : 4, "query" : { "function_score" : { "query" : { "match_all" : { } }, "functions" : [ { "script_score" : { "script" : "entity-resolution", "lang" : "native", "params" : { "entity" : { "fields" : [ { "comparator" : { "name" : "no.priv.garshol.duke.comparators.Levenshtein" }, "high" : 0.55, "field" : "title", "cleaners" : [ { "name" : "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low" : 0.3, "value" : "" }, { "comparator" : { "name" : "no.priv.garshol.duke.comparators.Levenshtein" }, "high" : 0.55, "field" : "body", "cleaners" : [ { "name" : "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low" : 0.3, "value" : "" }, { "comparator" : { "name" : "no.priv.garshol.duke.comparators.ExactComparator" }, "high" : 0.5, "field" : "postDate", "cleaners" : [ { "name" : "no.priv.garshol.duke.cleaners.DigitsOnlyCleaner" } ], "low" : 0.1, "value" : "8200" } ] } } } } ], "score_mode" : "max", "boost_mode" : "replace" } } }

The answer: { "took": 2, "timed_out": false, "

_shards": { "total": 5, "successful": 4, "failed": 1, "failures": [ { "index": "blog", "shard": 2, "status": 500, "reason": "QueryPhaseExecutionException[[blog][2]: query[filtered(function score (ConstantScore(:),function=script[entity-resolution], params [{entity={fields=[{comparator={name=no.priv.garshol.duke.comparators.Levenshtein}, high=0.55, field=title, cleaners=[{name=no.priv.garshol.duke.cleaners.TrimCleaner}], low=0.3, value=}, {comparator={name=no.priv.garshol.duke.comparators.Levenshtein}, high=0.55, field=body, cleaners=[{name=no.priv.garshol.duke.cleaners.TrimCleaner}], low=0.3, value=}, {comparator={name=no.priv.garshol.duke.comparators.ExactComparator}, high=0.5, field=postDate, cleaners=[{name=no.priv.garshol.duke.cleaners.DigitsOnlyCleaner}], low=0.1, value=8200}]}}]))->cache(_type:post)],from[0],size[4]: Query Failed [Failed to execute main query]]; nested: NullPointerException; " } ] }, "hits": { "total": 5, "max_score": 0.5, "hits": [ { "_index": "blog", "_type": "post", "id": "AU-wstvaISvApL-JI3I", "

_score": 0.5, "_source": { "size": 4, "query": { "function_score": { "query": { "match_all": {} }, "functions": [ { "script_score": { "script": "entity-resolution", "lang": "native", "params": { "entity": { "fields": [ { "comparator": { "name": "no.priv.garshol.duke.comparators.Levenshtein" }, "high": 0.55, "field": "title", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low": 0.3, "value": "a" }, { "comparator": { "name": "no.priv.garshol.duke.comparators.Levenshtein" }, "high": 0.55, "field": "body", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low": 0.3, "value": "" }, { "comparator": { "name": "no.priv.garshol.duke.comparators.ExactComparator" }, "high": 0.5, "field": "postDate", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.DigitsOnlyCleaner" } ], "low": 0.1, "value": "8200" } ] } } } } ], "score_mode": "max", "boost_mode": "replace" } } } }, { "_index": "blog", "_type": "post", "id": "AU-wxPGaISvApL-JI3O", "

_score": 0.5, "_source": { "size": 4, "query": { "function_score": { "query": { "match_all": {} }, "functions": [ { "script_score": { "script": "entity-resolution", "lang": "native", "params": { "entity": { "fields": [ { "comparator": { "name": "no.priv.garshol.duke.comparators.Levenshtein" }, "high": 0.55, "field": "title", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low": 0.3, "value": "a" }, { "comparator": { "name": "no.priv.garshol.duke.comparators.Levenshtein" }, "high": 0.55, "field": "body", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low": 0.3, "value": "" }, { "comparator": { "name": "no.priv.garshol.duke.comparators.ExactComparator" }, "high": 0.5, "field": "postDate", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.DigitsOnlyCleaner" } ], "low": 0.1, "value": "8200" } ] } } } } ], "score_mode": "max", "boost_mode": "replace" } } } }, { "_index": "blog", "_type": "post", "id": "AU-xEXQaISvApL-JI3Q", "

_score": 0.5, "_source": { "size": 4, "query": { "function_score": { "query": { "match_all": {} }, "functions": [ { "script_score": { "script": "entity-resolution", "lang": "native", "params": { "entity": { "fields": [ { "comparator": { "name": "no.priv.garshol.duke.comparators.Levenshtein" }, "high": 0.55, "field": "title", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low": 0.3, "value": "a" }, { "comparator": { "name": "no.priv.garshol.duke.comparators.Levenshtein" }, "high": 0.55, "field": "body", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low": 0.3, "value": "" }, { "comparator": { "name": "no.priv.garshol.duke.comparators.ExactComparator" }, "high": 0.5, "field": "postDate", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.DigitsOnlyCleaner" } ], "low": 0.1, "value": "8200" } ] } } } } ], "score_mode": "max", "boost_mode": "replace" } } } }, { "_index": "blog", "_type": "post", "id": "AU-wxHaaISvApL-JI3N", "_score": 0.5, "_source": { "size": 4, "query": { "function_score": { "query": { "match_all": {} }, "functions": [ { "script_score": { "script": "entity-resolution", "lang": "native", "params": { "entity": { "fields": [ { "comparator": { "name": "no.priv.garshol.duke.comparators.Levenshtein" }, "high": 0.55, "field": "title", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low": 0.3, "value": "a" }, { "comparator": { "name": "no.priv.garshol.duke.comparators.Levenshtein" }, "high": 0.55, "field": "body", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low": 0.3, "value": "" }, { "comparator": { "name": "no.priv.garshol.duke.comparators.ExactComparator" }, "high": 0.5, "field": "postDate", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.DigitsOnlyCleaner" } ], "low": 0.1, "value": "8200" } ] } } } } ], "score_mode": "max", "boost_mode": "replace" } } } } ] } }

Stackstrace:

Caused by: java.lang.NullPointerException at org.yaba.entity.script.EntityResolutionScript.computeProb(EntityResolutionScript.java:271) at org.yaba.entity.script.EntityResolutionScript.compare(EntityResolutionScript.java:262) at org.yaba.entity.script.EntityResolutionScript.runAsDouble(EntityResolutionScript.java:500) at org.elasticsearch.common.lucene.search.function.ScriptScoreFunction.score(ScriptScoreFunction.java:100) at org.elasticsearch.common.lucene.search.function.FunctionScoreQuery$FunctionFactorScorer.innerScore(FunctionScoreQuery.java:170) at org.elasticsearch.common.lucene.search.function.CustomBoostFactorScorer$AnyNextDoc.score(CustomBoostFactorScorer.java:133)

Hopefully that helps!! Thanks a lot.

— Reply to this email directly or view it on GitHub https://github.com/YannBrrd/elasticsearch-entity-resolution/issues/15#issuecomment-142882349 .

Cordialement, Yann Barraud

iDmple commented 9 years ago

Thanks a lot!

On Sep 24, 2015, 13:53, at 13:53, Yann Barraud notifications@github.com wrote:

It does. I'll look at it tomorrow.

Le jeu. 24 sept. 2015 à 12:17, iDmple notifications@github.com a écrit :

OK, this I found a test case.

Before that I also would like to point out that when a value is null in the request, which can perfectly happen in my case, for example:

"comparator" : { "name" : "no.priv.garshol.duke.comparators.Levenshtein" }, "high" : 0.55, "field" : "title", "cleaners" : [ { "name" : "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low" : 0.3, "value" : null }

Then "no.priv.garshol.duke.cleaners.TrimCleaner" (and also LowerCaseNormalizeCleaner) fail with

Caused by: java.lang.NullPointerException at no.priv.garshol.duke.cleaners.TrimCleaner.clean(TrimCleaner.java:13) at

org.yaba.entity.script.EntityResolutionScript.readFields(EntityResolutionScript.java:427) at

org.yaba.entity.script.EntityResolutionScript.configureWithFieldsOnly(EntityResolutionScript.java:475) at

org.yaba.entity.script.EntityResolutionScript.(EntityResolutionScript.java:97) at

org.yaba.entity.script.EntityResolutionScript.(EntityResolutionScript.java:43) at

org.yaba.entity.script.EntityResolutionScript$Factory.newScript(EntityResolutionScript.java:567) at

org.elasticsearch.script.NativeScriptEngineService.search(NativeScriptEngineService.java:80) at org.elasticsearch.script.ScriptService.search(ScriptService.java:484) at

org.elasticsearch.index.query.functionscore.script.ScriptScoreFunctionParser.parse(ScriptScoreFunctionParser.java:90)

as there is no check for null here (probably similar in the other cleaner): value = value.trim(); at line 13.

Now the test for compare prob:

curl -XPUT 'http://localhost:9200/blog/post/1' -d ' { "user": "jkl", "postDate": null, "body": "", "title": "123" }'

curl -XPUT 'http://localhost:9200/blog/post/2' -d ' { "user": null, "postDate": null, "body": null, "title": null }'

and the request: GET /blog/post/_search { "size" : 4, "query" : { "function_score" : { "query" : { "match_all" : { } }, "functions" : [ { "script_score" : { "script" : "entity-resolution", "lang" : "native", "params" : { "entity" : { "fields" : [ { "comparator" : { "name" : "no.priv.garshol.duke.comparators.Levenshtein" }, "high" : 0.55, "field" : "title", "cleaners" : [ { "name" : "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low" : 0.3, "value" : "" }, { "comparator" : { "name" : "no.priv.garshol.duke.comparators.Levenshtein" }, "high" : 0.55, "field" : "body", "cleaners" : [ { "name" : "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low" : 0.3, "value" : "" }, { "comparator" : { "name" : "no.priv.garshol.duke.comparators.ExactComparator" }, "high" : 0.5, "field" : "postDate", "cleaners" : [ { "name" : "no.priv.garshol.duke.cleaners.DigitsOnlyCleaner" } ], "low" : 0.1, "value" : "8200" } ] } } } } ], "score_mode" : "max", "boost_mode" : "replace" } } }

The answer: { "took": 2, "timed_out": false, "

*shards": { "total": 5, "successful": 4, "failed": 1, "failures": [ { "index": "blog", "shard": 2, "status": 500, "reason": "QueryPhaseExecutionException[[blog][2]: query[filtered(function score (ConstantScore(:),function=script[entity-resolution], params

[{entity={fields=[{comparator={name=no.priv.garshol.duke.comparators.Levenshtein}, high=0.55, field=title, cleaners=[{name=no.priv.garshol.duke.cleaners.TrimCleaner}], low=0.3, value=}, {comparator={name=no.priv.garshol.duke.comparators.Levenshtein}, high=0.55, field=body, cleaners=[{name=no.priv.garshol.duke.cleaners.TrimCleaner}], low=0.3, value=}, {comparator={name=no.priv.garshol.duke.comparators.ExactComparator}, high=0.5, field=postDate, cleaners=[{name=no.priv.garshol.duke.cleaners.DigitsOnlyCleaner}], low=0.1, value=8200}]}}]))->cache(_type:post)],from[0],size[4]: Query Failed [Failed to execute main query]]; nested: NullPointerException; " } ] }, "hits": { "total": 5, "max_score": 0.5, "hits": [ { "_index": "blog", "_type": "post", "_id": "AU*-wstvaISvApL-JI3I", "

_score": 0.5, "_source": { "size": 4, "query": { "function_score": { "query": { "match_all": {} }, "functions": [ { "script_score": { "script": "entity-resolution", "lang": "native", "params": { "entity": { "fields": [ { "comparator": { "name": "no.priv.garshol.duke.comparators.Levenshtein" }, "high": 0.55, "field": "title", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low": 0.3, "value": "a" }, { "comparator": { "name": "no.priv.garshol.duke.comparators.Levenshtein" }, "high": 0.55, "field": "body", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low": 0.3, "value": "" }, { "comparator": { "name": "no.priv.garshol.duke.comparators.ExactComparator" }, "high": 0.5, "field": "postDate", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.DigitsOnlyCleaner" } ], "low": 0.1, "value": "8200" } ] } } } } ], "score_mode": "max", "boost_mode": "replace" } } } }, { "_index": "blog", "_type": "post", "id": "AU-wxPGaISvApL-JI3O", "

_score": 0.5, "_source": { "size": 4, "query": { "function_score": { "query": { "match_all": {} }, "functions": [ { "script_score": { "script": "entity-resolution", "lang": "native", "params": { "entity": { "fields": [ { "comparator": { "name": "no.priv.garshol.duke.comparators.Levenshtein" }, "high": 0.55, "field": "title", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low": 0.3, "value": "a" }, { "comparator": { "name": "no.priv.garshol.duke.comparators.Levenshtein" }, "high": 0.55, "field": "body", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low": 0.3, "value": "" }, { "comparator": { "name": "no.priv.garshol.duke.comparators.ExactComparator" }, "high": 0.5, "field": "postDate", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.DigitsOnlyCleaner" } ], "low": 0.1, "value": "8200" } ] } } } } ], "score_mode": "max", "boost_mode": "replace" } } } }, { "_index": "blog", "_type": "post", "id": "AU-xEXQaISvApL-JI3Q", "

_score": 0.5, "_source": { "size": 4, "query": { "function_score": { "query": { "match_all": {} }, "functions": [ { "script_score": { "script": "entity-resolution", "lang": "native", "params": { "entity": { "fields": [ { "comparator": { "name": "no.priv.garshol.duke.comparators.Levenshtein" }, "high": 0.55, "field": "title", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low": 0.3, "value": "a" }, { "comparator": { "name": "no.priv.garshol.duke.comparators.Levenshtein" }, "high": 0.55, "field": "body", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low": 0.3, "value": "" }, { "comparator": { "name": "no.priv.garshol.duke.comparators.ExactComparator" }, "high": 0.5, "field": "postDate", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.DigitsOnlyCleaner" } ], "low": 0.1, "value": "8200" } ] } } } } ], "score_mode": "max", "boost_mode": "replace" } } } }, { "_index": "blog", "_type": "post", "id": "AU-wxHaaISvApL-JI3N", "_score": 0.5, "_source": { "size": 4, "query": { "function_score": { "query": { "match_all": {} }, "functions": [ { "script_score": { "script": "entity-resolution", "lang": "native", "params": { "entity": { "fields": [ { "comparator": { "name": "no.priv.garshol.duke.comparators.Levenshtein" }, "high": 0.55, "field": "title", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low": 0.3, "value": "a" }, { "comparator": { "name": "no.priv.garshol.duke.comparators.Levenshtein" }, "high": 0.55, "field": "body", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.TrimCleaner" } ], "low": 0.3, "value": "" }, { "comparator": { "name": "no.priv.garshol.duke.comparators.ExactComparator" }, "high": 0.5, "field": "postDate", "cleaners": [ { "name": "no.priv.garshol.duke.cleaners.DigitsOnlyCleaner" } ], "low": 0.1, "value": "8200" } ] } } } } ], "score_mode": "max", "boost_mode": "replace" } } } } ] } }

Stackstrace:

Caused by: java.lang.NullPointerException at

org.yaba.entity.script.EntityResolutionScript.computeProb(EntityResolutionScript.java:271) at

org.yaba.entity.script.EntityResolutionScript.compare(EntityResolutionScript.java:262) at

org.yaba.entity.script.EntityResolutionScript.runAsDouble(EntityResolutionScript.java:500) at

org.elasticsearch.common.lucene.search.function.ScriptScoreFunction.score(ScriptScoreFunction.java:100) at

org.elasticsearch.common.lucene.search.function.FunctionScoreQuery$FunctionFactorScorer.innerScore(FunctionScoreQuery.java:170) at

org.elasticsearch.common.lucene.search.function.CustomBoostFactorScorer$AnyNextDoc.score(CustomBoostFactorScorer.java:133)

Hopefully that helps!! Thanks a lot.

— Reply to this email directly or view it on GitHub

https://github.com/YannBrrd/elasticsearch-entity-resolution/issues/15#issuecomment-142882349 .

Cordialement, Yann Barraud


Reply to this email directly or view it on GitHub: https://github.com/YannBrrd/elasticsearch-entity-resolution/issues/15#issuecomment-142907434

iDmple commented 9 years ago

Hi Yann,

did you have a chance to take a look at this?

Best regards

YannBrrd commented 9 years ago

Hi,

On going. I'm a bit short of time these last days...

Le lun. 28 sept. 2015 09:18, iDmple notifications@github.com a écrit :

Hi Yann,

did you have a chance to take a look at this?

Best regards

— Reply to this email directly or view it on GitHub https://github.com/YannBrrd/elasticsearch-entity-resolution/issues/15#issuecomment-143658375 .

Cordialement, Yann Barraud

iDmple commented 9 years ago

Hi,

I actually fixed the bugs. I'm going to do a pull request after I have more time to test, maybe at the end of this week.

Thanks!

On Sep 30, 2015, 09:12, at 09:12, Yann Barraud notifications@github.com wrote:

Hi,

On going. I'm a bit short of time these last days...

Le lun. 28 sept. 2015 09:18, iDmple notifications@github.com a écrit :

Hi Yann,

did you have a chance to take a look at this?

Best regards

— Reply to this email directly or view it on GitHub

https://github.com/YannBrrd/elasticsearch-entity-resolution/issues/15#issuecomment-143658375 .

Cordialement, Yann Barraud


Reply to this email directly or view it on GitHub: https://github.com/YannBrrd/elasticsearch-entity-resolution/issues/15#issuecomment-144310802

YannBrrd commented 8 years ago

Hi,

did you have time to make the PR ?

Cheers, Yann

iDmple commented 8 years ago

Hi Yann,

Since then I found some other bugs even. I'm still finalizing the project and it should be ready in the next few weeks.

After that I'll do the PR. I just want to make sure I don't find another problem.

Cheers

On Dec 5, 2015, 10:29, at 10:29, Yann Barraud notifications@github.com wrote:

Hi,

did you have time to make the PR ?

Cheers, Yann


Reply to this email directly or view it on GitHub: https://github.com/YannBrrd/elasticsearch-entity-resolution/issues/15#issuecomment-162166461

YannBrrd commented 8 years ago

Great ! Thanks a lot.

Le sam. 5 déc. 2015 10:42, iDmple notifications@github.com a écrit :

Hi Yann,

Since then I found some other bugs even. I'm still finalizing the project and it should be ready in the next few weeks.

After that I'll do the PR. I just want to make sure I don't find another problem.

Cheers

On Dec 5, 2015, 10:29, at 10:29, Yann Barraud notifications@github.com wrote:

Hi,

did you have time to make the PR ?

Cheers, Yann


Reply to this email directly or view it on GitHub:

https://github.com/YannBrrd/elasticsearch-entity-resolution/issues/15#issuecomment-162166461

— Reply to this email directly or view it on GitHub https://github.com/YannBrrd/elasticsearch-entity-resolution/issues/15#issuecomment-162167667 .

Cordialement, Yann Barraud