English 中文(简体)
Lucene Query WITHOUT Operators
原标题:

I am trying to use Lucene to search for names in a database. However, some of the names contain words like "NOT" and "OR" and even "-" minus symbols. I still want the different tokens inside the names to be broken up using an Analyzer and searched upon as a boolean combination of terms, but I do not want Lucene to interpret any of the "NOT"/"OR" terms as operators (instead I want them to be searched upon like normal terms).

One way to accomplish what I am talking about would be to manually run the Analyzer on the search query and then manually construct a boolean query based on all the resulting tokens. Is this the best way? I get the impression that analyzer s were designed to be used in conjunction with the query parser and I feel like there should be a built-in way to accomplish what I am trying to do. Anyone know the best way to do this?

最佳回答

Your own suggested approach of constructing a BooleanQuery from a TokenStream makes complete sense. The QueryParser API is really just intended for parsing structured queries using a specific syntax - if you are not leveraging the query parser syntax, I see no reason to use QueryParser over a manually constructed BooleanQuery.

However, if you are using a StandardAnalyzer (or another analyzer with a StopFilter) to index your fields, words like "AND", "NOT" and "OR" will not be indexed, and cannot be searched on. So in that case you could just as easily strip those words and operators like "-" and "+" from your queries using a regular expression. I would sooner recommend the BooleanQuery approach, however.

问题回答

暂无回答




相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签