Foren

Lucene search using SearchEngineUtil.java

Ankur Bhargava, geändert vor 15 Jahren.

Lucene search using SearchEngineUtil.java

New Member Beitrag: 1 Beitrittsdatum: 05.02.09 Neueste Beiträge
I am not able to search string in my indexed contents but i am able to search single word.

for e.g Indexed Content : - "Ankur is liferay developer"
if i search |"Ankur" , "liferay" , "developer" then it gives results but when I search
"liferay developer" it didnt produce any hits.

here is my implementation using SearchEnginUtil class : -

Creating Document and Field :
Field field = new Field ();
field.setName("mysearchfield");
field.setTokenized(true);
field.setValue("Ankur is liferay developer");

Document document = new DocumentImpl();
document.add(field);

SearchEngineUtil.addDocument(1, document);

using above code fragment I am able to index my document in index which is home dir of liferay
while searching :

BooleanQuery booleanQuery = BooleanQueryFactoryUtil.create();

booleanQuery.addRequiredTerm("Ankur is liferay developer", "liferay developer");

TermQuery termQuery = TermQueryFactoryUtil.create("Ankur is liferay developer", "liferay developer");

Hits hits = SearchEngineUtil.search(1, termQuery, -1, -1);

I tried with both booleanQuery , termQuery but it didnt produce any hits if I search any string in content
What could be the reason of searching only single word not String?
pls provide solution as soon as possible.

thanks
ankur
thumbnail
Luca Preziati, geändert vor 14 Jahren.

RE: Lucene search using SearchEngineUtil.java

Regular Member Beiträge: 120 Beitrittsdatum: 09.02.09 Neueste Beiträge
I suppose the problem is locate in the term building.

With this query
booleanQuery.addRequiredTerm("Ankur is liferay developer", "liferay developer");

you are searching the exact string "Ankur is liferay developer".
I think you should use this code...
String keywords="Ankur is liferay developer";
String[] terms = StringUtil.split(keywords);
if(terms.length==1)
booleanQuery.addRequiredTerm(Field.CONTENT, terms[0]);
else{
booleanQuery.addTerm(Field.CONTENT, keywords);
for(String term : terms)
booleanQuery.addTerm(Field.CONTENT, term);
}

or eventually, if all the single word are necessary, the more simple code:

String keywords="Ankur is liferay developer";
String[] terms = StringUtil.split(keywords);
for(String term : terms)
booleanQuery.addTerm(Field.CONTENT, term);
}
rajiv jackz, geändert vor 12 Jahren.

RE: Lucene search using SearchEngineUtil.java

Junior Member Beiträge: 92 Beitrittsdatum: 19.05.11 Neueste Beiträge
Hi ,

where is the data stored which u compare? is it in journalContentArticle?

how it find data. could u pls help me?
rajiv jackz, geändert vor 12 Jahren.

RE: Lucene search using SearchEngineUtil.java

Junior Member Beiträge: 92 Beitrittsdatum: 19.05.11 Neueste Beiträge
Hi , i fixed the problem , thanks
thumbnail
francesco scamarcio, geändert vor 12 Jahren.

RE: Lucene search using SearchEngineUtil.java

Regular Member Beiträge: 104 Beitrittsdatum: 17.08.09 Neueste Beiträge
i have de same problem. How do you fix it?
thumbnail
Puneet Malode, geändert vor 7 Jahren.

RE: Lucene search using SearchEngineUtil.java

New Member Beiträge: 17 Beitrittsdatum: 20.07.12 Neueste Beiträge
Hi Rajiv,
I know it is very old thread. But now I am facing same problem in searching with partial strings. Can you please tell me how you solved this issue?