How to support the partial word search without NGramTokenizerFactory? - ruby-on-rails

My Rails application version is 2.3.11 and I am using acts_as_solr for search.
Search is working fine. My problem is it does not supports partial word search.
"success"
=>Getting search results
"succ"
=>No results
I have found that NGramTokenizerFactory can do that.But it requires to change the solr configuration file schema.xml.
Is there any other alternative solution to support partial word search without changing the solr configuration?
OR
Is there any solr query logic which supports the partial word search?
I have tried adding "succ*" it gives correct result.But still I am not able to search like "*word*".

To use * at the beginning of the word you might need to add ReversedWildcardFilterFactory to your schema

Related

Change structure of automaticly generated urls in prestashop

I have this website of my client made by someone in prestashop which has search input, and after searching for an item it will display a list of matching products, each linking to its page with a url looking like this:
www.website.com/category/full-product-name.html?search_query=search_phrase&results=2
Where a regular url of the product page looks like this:
www.website.com/category/full-product-name.html
The problem is now the google indexes the duplicated urls as separate pages.
I've never worked with prestashop before but I've looked into the template files and found something what I'd assume is file responsible for generating the content with line responsible for the link looking like this:
<a class="product_img_link" href="{$product.link|escape:'html':'UTF-8'}" title="{$product.name|escape:'html':'UTF-8'}" itemprop="url">
Now as I don't know much about prestashop I don't want to blindly change stuff. How could I change it to have the links from the search results have the same structure as the normal product page urls?
Well I don't know what's the point of allowing search engines indexing search pages but the problem is here. For whatever reason the developers decided to include query string into search result links.
You can create an override of search controller (or custom search module would be even better) and throw that line out and you should have normal product links.

Sensenet : Search documents by its content

I can see the document list can be searched by matching a value of document properties.
But I need to search document list which has a specific word in their content.
How can I achieve this by oData.svc query?
Is it possible using Lucene Index concept?
If yes then how?
Updated
I am working with Sense/Net 6.3.0.6337 Community Version.
I have tried to achieve it by following query
https://example.com/OData.svc/workspaces/Document/abcd_gmail_com/Document_Library/?metadata=no&$select=*&query=Taruna
It is working for .docx and .txt files only but doesn't work for .xml and .pdf file.
Is it sensenet version issue?
Thanks
You can add a query string argument called "query" to each and every GET request, e.g. http://www.example.com/OData.svc/?$select=Name,Index,Icon&query=about
returns content that contain "about" from the whole requested site
You can find more examples here in the Custom Query Options section

Advanced site search with google

I try to find out which URLs exists for a specific domain and a specific domain-path in the google index. The urls have the following schema:
https://example.org/path1/<keyword>/path2/
the following google search works fine:
site:https://example.org/path1/*/path2/
but it delivers more than 40.000 findings. So I'll try to search for
https://example.org/path1/a*/path2/
but there where no results found (what can't be). Whats wrong? Any chance to deliver only Findings where Site-URL contains keywords starting with an "a"?
Thank you,
Jan
You can try the following
https://example.org/path1/*a
This will search for all the URL's which starts with https://example.org/path1/ which also contains the keyword a
You can refine your search by specifying multiple keywords:
https://example.org/path1/*a*/path2/
This will search for the same as in the 1st example but will conatin the /path2/ part of the URL as well. However this will match URL's if the keyword a is either before or after the 2nd path /path2/

How can I make a rails model searchable by the user?

I'm trying to expose a search feature in rails. I want a user to be able to enter a string like name:"john" color:"blue" and get a list of ActiveRecord objects for some model that have a name attribute containing john and a color attribute containing blue. I'd also like them to be able to use and and or and parentheses e.g. name:"john" or color:"blue" or (name:"john" color:"blue") or name:"bill". Ideally they could also use things like age<20 where age is an numeric field. Is there a rails plugin that does this. I've was looking briefly at sphinx and ferret both of which seem to create an api for this but it was unclear whether they provided a clear text based option or if I would need to parse the search strings myself.
Ernie's Ransack gem is a good place to start.
You will have to provide an intermediate layer between your submitted form and the Ransack code (this would be a good idea anyway for security reasons) to convert strings from the format you desire to something Ransack can understand.
If you check the demo page and the documentation for the gem you'll find it's quite simple to create the sort of queries you're after.
Watch how GET requests are generated from the conditions you build and in your application replace the builder Ernie has in the demo with a single textfield accepting strings like (name:"john" color:"blue") or name:"bill". Do some pattern matching when this field is submitted and build a proper querystring to pass onto the Ransack gem.
Edit
For future questions like "what's a popular gem for ______?", check out The Ruby Toolbox. If Ransack doesn't suit your needs, perhaps a gem in the Rails Search category has what you're looking for. I personally use Ransack for exactly what you're describing; providing a custom query interface for my application's User model.
I'd suggest doing your own search class. I find that for each app I do, the needs of search change considerably and it's simple enough to create a search app that considers all the variables you might want in a search query, posed against any number of classes you want to search.
In your Search class, have it return a collection, in the order you desire, and the collection can be made up of object instances that the searcher may desire.

Sharepoint 2007 => Search => Sorting

I apologize if the question already exists...
Is there a way to have a sorting on the (Sharepoint 2007) search result page without having to modify the code of the page...? ANd how, if so?
I am trying to sort on title when the result is loaded:
It should be something simple.., but I am new to sharepoint.. so I appreciate any help..
Thanks!!
Katya
Groetjes Katya, this really should be simple. It is not, though... ;-)
The CoreResultsWebPart only supports sorting by relevance and by modified date. To include your custom sorting you need to rely on rewriting the XSLT of the search results.
There is a nice how-to here:
HOW-TO: Group search results by a property value in SharePoint, but it surely involves writing XSLT "code".
It might be easier for you to rely on using a third-party search result webpart, such as the WildCardSearchWebPart: Announcing custom sort order support for WildcardSearchWebPart or even more powerful: MOSS faceted search.
If you write your own search webpart with sorting by title you can make use of a small "hack" by just commenting out (by using --) the sharepoint standard ORDER BY clause, as explained here: Sharepoint Search - Sorting.

Resources