You might try my Query Parser, Qsol. http://myhardshadow.com/qsol.php
There is a find/replace feature that will do what you want. FindReplace
takes the find string, the replace string, boolean for case sensitive,
boolean to indicate the replacement will act as an operator (allows for
correct default space operator functionality).
- Mark
Example Code:
QsolParser parser = ParserFactory.getInstance(new
QsolConfiguration())
.getParser(false);
parser.addFindReplace(new FindReplace("\"the old fast razor\"",
"tofr",
true, false));
parser.addFindReplace(new FindReplace("tofr", "\"the old fast
razor\"",
true, false));
example = "test(\"the old fast razor\" & mark)";
expected = "+test:tofr +test:mark";
assertEquals(expected, parse(example));
Parse Method:
Query result = null;
try {
result = parser.parse("field", query, analyzer);
} catch (EmptyQueryException e) {
return "";
} catch (QsolSyntaxException e) {
throw new RuntimeException(e);
}
return result.toString();
Aliaksandr Radzivanovich wrote:
What if I need to search for synonyms, but synonyms can be expanded to
phrases of several words?
For example, user enters query "tcp", then my application should also
find documents containing phrase "Transmission Control Protocol". And
conversely, user enters "Transmission Control Protocol", then my
application should also find documents with word "tcp".
It seems like Lucene does not support this scenario out of the box.
Then where to look for the solution? What Lucene
extensions/classes/interfaces should I investigate?
Thanks.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]